Instantaneous Call Sessions over a Communications Application

ABSTRACT

In one embodiment, a method includes determining, by a computer server machine, that a callee-user is available for a communication session based on location information associated with a client system of the callee-user; sending, by the computer server machine, in response to determining that the callee-user is available, a notification to a client system of a caller-user indicating that the callee-user is available; receiving, by the computer server machine, a request from the client system of the caller-user to initiate the communication session; establishing, by the computer server machine, the communication session to enable a media stream comprising media captured at the client system of the caller-user to be received at the client system of a callee-user; and sending, by the computer server machine, the media captured at the client system of the caller-user to the client system of the callee-user.

PRIORITY

This application is a continuation under 35 U.S.C. § 120 of U.S. patentapplication Ser. No. 15/148,772, filed 6 May 2016.

TECHNICAL FIELD

This disclosure generally relates to user interfaces and establishingmedia communications among users, particularly within the context of acommunications application.

BACKGROUND

A user interface (UI), in the industrial design field of human-machineinteraction, is the space where interactions between humans and machinesoccur. The goal of the interactions between a human, often referred toas a “user,” and a machine at the user interface is the user's controlof the machine and its operations (e.g., through user input) and machinefeedback (e.g., through program output). A graphical user interface(GUI) is a type of user interface that allows users to interact withsoftware applications executing on electronic or computing devicesthrough multimedia objects (e.g., images, videos, audios, etc.) ratherthan purely text commands. A user interface may allow users to interactwith a social-networking system.

A social-networking system, which may include a social-networkingwebsite, may enable its users (such as persons or organizations) tointeract with it and with each other through it. The social-networkingsystem may, with input from a user, create and store in thesocial-networking system a user profile associated with the user. Theuser profile may include demographic information, communication-channelinformation, and information on personal interests of the user. Thesocial-networking system may also, with input from a user, create andstore a record of relationships of the user with other users of thesocial-networking system, as well as provide services (e.g., wall posts,photo-sharing, event organization, messaging, games, or advertisements)to facilitate social interaction between or among users.

The social-networking system may send over one or more networks contentor messages related to its services to a mobile or other computingdevice of a user. A user may also install software applications on amobile or other computing device of the user for accessing a userprofile of the user and other data within the social-networking system.The social-networking system may generate a personalized set of contentobjects to display to a user, such as a newsfeed of aggregated storiesof other users connected to the user.

A mobile computing device—such as a smartphone, tablet computer, orlaptop computer—may include functionality for determining its location,direction, or orientation, such as a GPS receiver, compass, gyroscope,or accelerometer. Such a device may also include functionality forwireless communication, such as BLUETOOTH communication, near-fieldcommunication (NFC), or infrared (IR) communication or communicationwith a wireless local area networks (WLANs) or cellular-telephonenetwork. Such a device may also include one or more cameras, scanners,touchscreens, microphones, or speakers. Mobile computing devices mayalso execute software applications, such as games, web browsers, orsocial-networking applications. With social-networking applications,users may connect, communicate, and share information with other usersin their social networks.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments a client system (e.g., a mobile device) of afirst user may launch a video-call session to enable a video stream fordisplay in a small-overlay-window on a display of the client system ofthe first user. The client system of the first user may receive a videostream comprising video captured at a client system of a second user.The client system of the first user may display the video stream in thesmall-overlay-window. The small-overlay-window may be positioned over anactive application running on the client system of the first user.Displaying video streams in a small-overlay-window (or any subregionsmaller than the entire region) may be advantageous to users who need tomultitask. A user may be able do other tasks such as composing emails,watching videos, or playing games, while simultaneously engaging in avideo-call session. A user may be able to do several of these activitiesover an extended time period without a break in continuity, in context,or otherwise. As an example and not by way of limitation, a user may beplaying a game on the user's client system when a friend initiates avideo-call session. In this example, the user may accept the video callfrom the friend without interruption to the user's game, allowing for aseamless user experience where accepting a call causes minimalinterference with the user's current activities. As another example andnot by way of limitation, the user may be engaged in a video-callsession with a friend and may decide to watch a video suggested by thefriend. In this example, the user may launch an application associatedwith a video-sharing platform and watch the video without anyinterruption to the ongoing video-call session. The methods describedherein may also be useful for users who want to collaborate on anactivity or otherwise engage in the activity together. As an example andnot by way of limitation, multiple users may be working on a singlecrossword puzzle together in a crossword-puzzle application. In thisexample, the users may want to be engaged in a video-call session amongthemselves while they collaborate on solving the crossword puzzle. Asanother example and not by way of limitation, multiple users may want towatch a TV show together while being engaged in a video-call sessionamong themselves.

In particular embodiments, a communication system (e.g., thesocial-networking system) may determine an occurrence of a trigger eventindicating availability of a callee-user for a call session with acaller-user. The a communication system may send a notification to aclient system of the caller-user indicating an availability of thecallee-user to participate in the call session. The notification mayonly be sent if there is a threshold level of certainty that thecallee-user is available, which may include consideration of one or morenegative or positive conditions. The a communication system may receivea request from the client system of the caller-user to initiate the callsession. The a communication system may establish the call session toenable a media stream comprising media captured at the client system ofthe caller-user to be received at the client system of the callee-user.The a communication system may send the media captured at the clientsystem of the caller-user to the client system of the callee-user. Agoal of the disclosed method is to encourage the use of mediacommunications, particularly with the use of call sessions. One way itdoes so is by making the experience of setting up a session smoother andmore instantaneous. Almost immediately after a caller-user requests acall session, the callee-user is presented with media from thecaller-user. With minimal effort, the callee-user may choose to sendback media. The result is a disruption of the traditional, cumbersomemodel of requesting a call, waiting for the call to be accepted, andfinally sending media once the call is accepted. Another way thedisclosed method may encourage the use of media communications is bypromoting the call session functionality to a caller-user at the righttime (e.g., when the callee-user is available or interested in a callsession), thereby increasing the chance that a request for a callsession will be received favorably and likely resulting in a positivecall session experience. Over time, having such positive experienceswith call sessions may encourage users to make more use of callsessions. Promoting the call session functionality at the right timealso serves to reinforce the smoothness and instantaneousness of theexperience, because it ensures that the caller-user is rarely refused orleft waiting (e.g., a user who is available will be much more likely torespond quickly). The caller-user experiences a much quicker connectionwith the callee-user, without much uncertainty about whether the otheruser will refuse the call.

The embodiments disclosed above are only examples, and the scope of thisdisclosure is not limited to them. Particular embodiments may includeall, some, or none of the components, elements, features, functions,operations, or steps of the embodiments disclosed above. Embodimentsaccording to the invention are in particular disclosed in the attachedclaims directed to a method, a storage medium, a system and a computerprogram product, wherein any feature mentioned in one claim category,e.g. method, can be claimed in another claim category, e.g. system, aswell. The dependencies or references back in the attached claims arechosen for formal reasons only. However any subject matter resultingfrom a deliberate reference back to any previous claims (in particularmultiple dependencies) can be claimed as well, so that any combinationof claims and the features thereof are disclosed and can be claimedregardless of the dependencies chosen in the attached claims. Thesubject-matter which can be claimed comprises not only the combinationsof features as set out in the attached claims but also any othercombination of features in the claims, wherein each feature mentioned inthe claims can be combined with any other feature or combination ofother features in the claims. Furthermore, any of the embodiments andfeatures described or depicted herein can be claimed in a separate claimand/or in any combination with any embodiment or feature described ordepicted herein or with any of the features of the attached claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example network environment associated with asocial-networking system.

FIG. 2 illustrates an example social graph.

FIG. 3 illustrates a client-system display that includes a video streamwithin a small-overlay-window.

FIG. 4 illustrates a client-system display with a small-overlay-windowpositioned over an interface of a second application.

FIGS. 5A and 5B illustrate, respectively, a display of a video stream ina small-overlay-window, and a display of a video stream in a full-screendisplay.

FIG. 6A illustrates a notification on a display of a caller-user'sclient system indicating an availability of a callee-user.

FIG. 6B illustrates a display of a callee-user's client system thatincludes a video stream from the caller-user.

FIG. 6C illustrates a display of a callee-user's client system 130following a reply-input from the callee-user requesting that media besent to the caller-user.

FIG. 7 illustrates notifications being displayed indicating theavailability of three callee-users.

FIG. 8 illustrates an example method for negotiating, establishing, andlaunching a particular type of call session with audio and videostreams.

FIG. 9A illustrates a display of the client system of the caller-userthat includes a prompt for initiating a silent-video call session

FIG. 9B illustrates a display of the client system of the callee-userreceiving unidirectional silent video.

FIG. 9C illustrates a display of the client system of the callee-userduring a bidirectional silent-video call session.

FIG. 9D illustrates a display of the client system of the callee-userwith a request to accept audio from the client system of thecaller-user.

FIGS. 10A-10D illustrate example displays of the client system of thecallee-user at different stages of establishing a bidirectionalvideo-call session.

FIGS. 11A-11C illustrate example displays of the client system of thecaller-user at different stages of establishing a bidirectionalvideo-call session.

FIG. 12 illustrates an example method for displaying a video stream fora video-call session in a small-overlay-window.

FIG. 13 illustrates an example method for notifying a caller-user of anavailability of a callee-user and establishing a call session requestedby the caller-user.

FIG. 14 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

FIG. 1 illustrates an example network environment 100 associated with asocial-networking system. Network environment 100 includes a clientsystem 130, a social-networking system 160, and a third-party system 170connected to each other by a network 110. Although FIG. 1 illustrates aparticular arrangement of client system 130, social-networking system160, third-party system 170, and network 110, this disclosurecontemplates any suitable arrangement of client system 130,social-networking system 160, third-party system 170, and network 110.As an example and not by way of limitation, two or more of client system130, social-networking system 160, and third-party system 170 may beconnected to each other directly, bypassing network 110. As anotherexample, two or more of client system 130, social-networking system 160,and third-party system 170 may be physically or logically co-locatedwith each other in whole or in part. Moreover, although FIG. 1illustrates a particular number of client systems 130, social-networkingsystems 160, third-party systems 170, and networks 110, this disclosurecontemplates any suitable number of client systems 130,social-networking systems 160, third-party systems 170, and networks110. As an example and not by way of limitation, network environment 100may include multiple client system 130, social-networking systems 160,third-party systems 170, and networks 110.

This disclosure contemplates any suitable network 110. As an example andnot by way of limitation, one or more portions of network 110 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 110 may include one or more networks110.

Links 150 may connect client system 130, social-networking system 160,and third-party system 170 to communication network 110 or to eachother. This disclosure contemplates any suitable links 150. Inparticular embodiments, one or more links 150 include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links 150 each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link 150, or a combination of two or more such links150. Links 150 need not necessarily be the same throughout networkenvironment 100. One or more first links 150 may differ in one or morerespects from one or more second links 150.

In particular embodiments, client system 130 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 130. As an example and not by way of limitation, a client system130 may include a computer system such as a desktop computer, notebookor laptop computer, netbook, a tablet computer, e-book reader, GPSdevice, camera, personal digital assistant (PDA), handheld electronicdevice, cellular telephone, smartphone, augmented/virtual realitydevice, other suitable electronic device, or any suitable combinationthereof. This disclosure contemplates any suitable client systems 130. Aclient system 130 may enable a network user at client system 130 toaccess network 110. A client system 130 may enable its user tocommunicate with other users at other client systems 130.

In particular embodiments, client system 130 may include a web browser132, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLAFIREFOX, and may have one or more add-ons, plug-ins, or otherextensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client system130 may enter a Uniform Resource Locator (URL) or other addressdirecting the web browser 132 to a particular server (such as server162, or a server associated with a third-party system 170), and the webbrowser 132 may generate a Hyper Text Transfer Protocol (HTTP) requestand communicate the HTTP request to server. The server may accept theHTTP request and communicate to client system 130 one or more Hyper TextMarkup Language (HTML) files responsive to the HTTP request. Clientsystem 130 may render a webpage based on the HTML files from the serverfor presentation to the user. This disclosure contemplates any suitablewebpage files. As an example and not by way of limitation, webpages mayrender from HTML files, Extensible Hyper Text Markup Language (XHTML)files, or Extensible Markup Language (XML) files, according toparticular needs. Such pages may also execute scripts such as, forexample and without limitation, those written in JAVASCRIPT, JAVA,MICROSOFT SILVERLIGHT, combinations of markup language and scripts suchas AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a webpage encompasses one or more corresponding webpagefiles (which a browser may use to render the webpage) and vice versa,where appropriate.

In particular embodiments, social-networking system 160 may be anetwork-addressable computing system that can host an online socialnetwork. Social-networking system 160 may generate, store, receive, andsend social-networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social-networking system 160 maybe accessed by the other components of network environment 100 eitherdirectly or via network 110. As an example and not by way of limitation,client system 130 may access social-networking system 160 using a webbrowser 132, or a native application associated with social-networkingsystem 160 (e.g., a mobile social-networking application, a messagingapplication, another suitable application, or any combination thereof)either directly or via network 110. In particular embodiments,social-networking system 160 may include one or more servers 162. Eachserver 162 may be a unitary server or a distributed server spanningmultiple computers or multiple datacenters. Servers 162 may be ofvarious types, such as, for example and without limitation, web server,news server, mail server, message server, advertising server, fileserver, application server, exchange server, database server, proxyserver, another server suitable for performing functions or processesdescribed herein, or any combination thereof. In particular embodiments,each server 162 may include hardware, software, or embedded logiccomponents or a combination of two or more such components for carryingout the appropriate functionalities implemented or supported by server162. In particular embodiments, social-networking system 160 may includeone or more data stores 164. Data stores 164 may be used to storevarious types of information. In particular embodiments, the informationstored in data stores 164 may be organized according to specific datastructures. In particular embodiments, each data store 164 may be arelational, columnar, correlation, or other suitable database. Althoughthis disclosure describes or illustrates particular types of databases,this disclosure contemplates any suitable types of databases. Particularembodiments may provide interfaces that enable a client system 130, asocial-networking system 160, or a third-party system 170 to manage,retrieve, modify, add, or delete, the information stored in data store164.

In particular embodiments, social-networking system 160 may store one ormore social graphs in one or more data stores 164. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social-networking system 160 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social-networking system 160 and then addconnections (e.g., relationships) to a number of other users ofsocial-networking system 160 to whom they want to be connected. Herein,the term “friend” may refer to any other user of social-networkingsystem 160 with whom a user has formed a connection, association, orrelationship via social-networking system 160.

In particular embodiments, social-networking system 160 may provideusers with the ability to take actions on various types of items orobjects, supported by social-networking system 160. As an example andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social-networking system 160 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social-networking system 160 or by an external system ofthird-party system 170, which is separate from social-networking system160 and coupled to social-networking system 160 via a network 110.

In particular embodiments, social-networking system 160 may be capableof linking a variety of entities. As an example and not by way oflimitation, social-networking system 160 may enable users to interactwith each other as well as receive content from third-party systems 170or other entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system 170 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system 170 may beoperated by a different entity from an entity operatingsocial-networking system 160. In particular embodiments, however,social-networking system 160 and third-party systems 170 may operate inconjunction with each other to provide social-networking services tousers of social-networking system 160 or third-party systems 170. Inthis sense, social-networking system 160 may provide a platform, orbackbone, which other systems, such as third-party systems 170, may useto provide social-networking services and functionality to users acrossthe Internet.

In particular embodiments, a third-party system 170 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 130. As an example and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social-networking system 160 also includesuser-generated content objects, which may enhance a user's interactionswith social-networking system 160. User-generated content may includeanything a user can add, upload, send, or “post” to social-networkingsystem 160. As an example and not by way of limitation, a usercommunicates posts to social-networking system 160 from a client system130. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social-networkingsystem 160 by a third-party through a “communication channel,” such as anewsfeed or stream.

In particular embodiments, social-networking system 160 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social-networking system 160 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. Social-networking system160 may also include suitable components such as network interfaces,security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments,social-networking system 160 may include one or more user-profile storesfor storing user profiles. A user profile may include, for example,biographic information, demographic information, behavioral information,social information, or other types of descriptive information, such aswork experience, educational history, hobbies or preferences, interests,affinities, or location. Interest information may include interestsrelated to one or more categories. Categories may be general orspecific. As an example and not by way of limitation, if a user “likes”an article about a brand of shoes the category may be the brand, or thegeneral category of “shoes” or “clothing.” A connection store may beused for storing connection information about users. The connectioninformation may indicate users who have similar or common workexperience, group memberships, hobbies, educational history, or are inany way related or share common attributes. The connection informationmay also include user-defined connections between different users andcontent (both internal and external). A web server may be used forlinking social-networking system 160 to one or more client systems 130or one or more third-party system 170 via network 110. The web servermay include a mail server or other messaging functionality for receivingand routing messages between social-networking system 160 and one ormore client systems 130. An API-request server may allow a third-partysystem 170 to access information from social-networking system 160 bycalling one or more APIs. An action logger may be used to receivecommunications from a web server about a user's actions on or offsocial-networking system 160. In conjunction with the action log, athird-party-content-object log may be maintained of user exposures tothird-party-content objects. A notification controller may provideinformation regarding content objects to a client system 130.Information may be pushed to a client system 130 as notifications, orinformation may be pulled from client system 130 responsive to a requestreceived from client system 130. Authorization servers may be used toenforce one or more privacy settings of the users of social-networkingsystem 160. A privacy setting of a user determines how particularinformation associated with a user can be shared. The authorizationserver may allow users to opt in to or opt out of having their actionslogged by social-networking system 160 or shared with other systems(e.g., third-party system 170), such as, for example, by settingappropriate privacy settings. Third-party-content-object stores may beused to store content objects received from third parties, such as athird-party system 170. Location stores may be used for storing locationinformation received from client systems 130 associated with users.Advertisement-pricing modules may combine social information, thecurrent time, location information, or other suitable information toprovide relevant advertisements, in the form of notifications, to auser.

FIG. 2 illustrates example social graph 200. In particular embodiments,social-networking system 160 may store one or more social graphs 200 inone or more data stores. In particular embodiments, social graph 200 mayinclude multiple nodes—which may include multiple user nodes 202 ormultiple concept nodes 204—and multiple edges 206 connecting the nodes.Example social graph 200 illustrated in FIG. 2 is shown, for didacticpurposes, in a two-dimensional visual map representation. In particularembodiments, a social-networking system 160, client system 130, orthird-party system 170 may access social graph 200 and relatedsocial-graph information for suitable applications. The nodes and edgesof social graph 200 may be stored as data objects, for example, in adata store (such as a social-graph database). Such a data store mayinclude one or more searchable or queryable indexes of nodes or edges ofsocial graph 200.

In particular embodiments, a user node 202 may correspond to a user ofsocial-networking system 160. As an example and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial-networking system 160. In particular embodiments, when a userregisters for an account with social-networking system 160,social-networking system 160 may create a user node 202 corresponding tothe user, and store the user node 202 in one or more data stores. Usersand user nodes 202 described herein may, where appropriate, refer toregistered users and user nodes 202 associated with registered users. Inaddition or as an alternative, users and user nodes 202 described hereinmay, where appropriate, refer to users that have not registered withsocial-networking system 160. In particular embodiments, a user node 202may be associated with information provided by a user or informationgathered by various systems, including social-networking system 160. Asan example and not by way of limitation, a user may provide his or hername, profile picture, contact information, birth date, sex, maritalstatus, family status, employment, education background, preferences,interests, or other demographic information. In particular embodiments,a user node 202 may be associated with one or more data objectscorresponding to information associated with a user. In particularembodiments, a user node 202 may correspond to one or more webpages.

In particular embodiments, a concept node 204 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social-network system 160 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social-networking system 160 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory; anobject in a augmented/virtual reality environment; another suitableconcept; or two or more such concepts. A concept node 204 may beassociated with information of a concept provided by a user orinformation gathered by various systems, including social-networkingsystem 160. As an example and not by way of limitation, information of aconcept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a website (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 204 may beassociated with one or more data objects corresponding to informationassociated with concept node 204. In particular embodiments, a conceptnode 204 may correspond to one or more webpages.

In particular embodiments, a node in social graph 200 may represent orbe represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible tosocial-networking system 160. Profile pages may also be hosted onthird-party websites associated with a third-party server 170. As anexample and not by way of limitation, a profile page corresponding to aparticular external webpage may be the particular external webpage andthe profile page may correspond to a particular concept node 204.Profile pages may be viewable by all or a selected subset of otherusers. As an example and not by way of limitation, a user node 202 mayhave a corresponding user-profile page in which the corresponding usermay add content, make declarations, or otherwise express himself orherself. As another example and not by way of limitation, a concept node204 may have a corresponding concept-profile page in which one or moreusers may add content, make declarations, or express themselves,particularly in relation to the concept corresponding to concept node204.

In particular embodiments, a concept node 204 may represent athird-party webpage or resource hosted by a third-party system 170. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. As an example and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check-in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “check-in”), causing a clientsystem 130 to send to social-networking system 160 a message indicatingthe user's action. In response to the message, social-networking system160 may create an edge (e.g., a check-in-type edge) between a user node202 corresponding to the user and a concept node 204 corresponding tothe third-party webpage or resource and store edge 206 in one or moredata stores.

In particular embodiments, a pair of nodes in social graph 200 may beconnected to each other by one or more edges 206. An edge 206 connectinga pair of nodes may represent a relationship between the pair of nodes.In particular embodiments, an edge 206 may include or represent one ormore data objects or attributes corresponding to the relationshipbetween a pair of nodes. As an example and not by way of limitation, afirst user may indicate that a second user is a “friend” of the firstuser. In response to this indication, social-networking system 160 maysend a “friend request” to the second user. If the second user confirmsthe “friend request,” social-networking system 160 may create an edge206 connecting the first user's user node 202 to the second user's usernode 202 in social graph 200 and store edge 206 as social-graphinformation in one or more of data stores 164. In the example of FIG. 2,social graph 200 includes an edge 206 indicating a friend relationbetween user nodes 202 of user “A” and user “B” and an edge indicating afriend relation between user nodes 202 of user “C” and user “B.”Although this disclosure describes or illustrates particular edges 206with particular attributes connecting particular user nodes 202, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202. As an example and not by way oflimitation, an edge 206 may represent a friendship, family relationship,business or employment relationship, fan relationship (including, e.g.,liking, etc.), follower relationship, visitor relationship (including,e.g., accessing, viewing, checking-in, sharing, etc.), subscriberrelationship, superior/subordinate relationship, reciprocalrelationship, non-reciprocal relationship, another suitable type ofrelationship, or two or more such relationships. Moreover, although thisdisclosure generally describes nodes as being connected, this disclosurealso describes users or concepts as being connected. Herein, referencesto users or concepts being connected may, where appropriate, refer tothe nodes corresponding to those users or concepts being connected insocial graph 200 by one or more edges 206.

In particular embodiments, an edge 206 between a user node 202 and aconcept node 204 may represent a particular action or activity performedby a user associated with user node 202 toward a concept associated witha concept node 204. As an example and not by way of limitation, asillustrated in FIG. 2, a user may “like,” “attended,” “played,”“listened,” “cooked,” “worked at,” or “watched” a concept, each of whichmay correspond to a edge type or subtype. A concept-profile pagecorresponding to a concept node 204 may include, for example, aselectable “check in” icon (such as, for example, a clickable “check in”icon) or a selectable “add to favorites” icon. Similarly, after a userclicks these icons, social-networking system 160 may create a “favorite”edge or a “check in” edge in response to a user's action correspondingto a respective action. As another example and not by way of limitation,a user (user “C”) may listen to a particular song (“Imagine”) using aparticular application (SPOTIFY, which is an online music application).In this case, social-networking system 160 may create a “listened” edge206 and a “used” edge (as illustrated in FIG. 2) between user nodes 202corresponding to the user and concept nodes 204 corresponding to thesong and application to indicate that the user listened to the song andused the application. Moreover, social-networking system 160 may createa “played” edge 206 (as illustrated in FIG. 2) between concept nodes 204corresponding to the song and the application to indicate that theparticular song was played by the particular application. In this case,“played” edge 206 corresponds to an action performed by an externalapplication (SPOTIFY) on an external audio file (the song “Imagine”).Although this disclosure describes particular edges 206 with particularattributes connecting user nodes 202 and concept nodes 204, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202 and concept nodes 204. Moreover,although this disclosure describes edges between a user node 202 and aconcept node 204 representing a single relationship, this disclosurecontemplates edges between a user node 202 and a concept node 204representing one or more relationships. As an example and not by way oflimitation, an edge 206 may represent both that a user likes and hasused at a particular concept. Alternatively, another edge 206 mayrepresent each type of relationship (or multiples of a singlerelationship) between a user node 202 and a concept node 204 (asillustrated in FIG. 2 between user node 202 for user “E” and conceptnode 204 for “SPOTIFY”).

In particular embodiments, social-networking system 160 may create anedge 206 between a user node 202 and a concept node 204 in social graph200. As an example and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 130) mayindicate that he or she likes the concept represented by the conceptnode 204 by clicking or selecting a “Like” icon, which may cause theuser's client system 130 to send to social-networking system 160 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social-networkingsystem 160 may create an edge 206 between user node 202 associated withthe user and concept node 204, as illustrated by “like” edge 206 betweenthe user and concept node 204. In particular embodiments,social-networking system 160 may store an edge 206 in one or more datastores. In particular embodiments, an edge 206 may be automaticallyformed by social-networking system 160 in response to a particular useraction. As an example and not by way of limitation, if a first useruploads a picture, watches a movie, or listens to a song, an edge 206may be formed between user node 202 corresponding to the first user andconcept nodes 204 corresponding to those concepts. Although thisdisclosure describes forming particular edges 206 in particular manners,this disclosure contemplates forming any suitable edges 206 in anysuitable manner.

In particular embodiments, social-networking system 160 may determinethe social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online social network,such as users, concepts, content, actions, advertisements, other objectsassociated with the online social network, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with third-party systems 170 or other suitable systems. Anoverall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, social-networking system 160 may measure orquantify social-graph affinity using an affinity coefficient (which maybe referred to herein as “coefficient”). The coefficient may representor quantify the strength of a relationship between particular objectsassociated with the online social network. The coefficient may alsorepresent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action. In this way, a user's future actions maybe predicted based on the user's prior actions, where the coefficientmay be calculated at least in part on the history of the user's actions.Coefficients may be used to predict any number of actions, which may bewithin or outside of the online social network. As an example and not byway of limitation, these actions may include various types ofcommunications, such as sending messages, posting content, or commentingon content; various types of a observation actions, such as accessing orviewing profile pages, media, or other suitable content; various typesof coincidence information about two or more social-graph entities, suchas being in the same group, tagged in the same photograph, checked-in atthe same location, or attending the same event; or other suitableactions. Although this disclosure describes measuring affinity in aparticular manner, this disclosure contemplates measuring affinity inany suitable manner.

In particular embodiments, social-networking system 160 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. As an example and not by way of limitation, particular useractions may be assigned both a rating and a weight while a relationshipassociated with the particular user action is assigned a rating and acorrelating weight (e.g., so the weights total 100%). To calculate thecoefficient of a user towards a particular object, the rating assignedto the user's actions may comprise, for example, 60% of the overallcoefficient, while the relationship between the user and the object maycomprise 40% of the overall coefficient. In particular embodiments, thesocial-networking system 160 may consider a variety of variables whendetermining weights for various factors used to calculate a coefficient,such as, for example, the time since information was accessed, decayfactors, frequency of access, relationship to information orrelationship to the object about which information was accessed,relationship to social-graph entities connected to the object, short- orlong-term averages of user actions, user feedback, other suitablevariables, or any combination thereof. As an example and not by way oflimitation, a coefficient may include a decay factor that causes thestrength of the signal provided by particular actions to decay withtime, such that more recent actions are more relevant when calculatingthe coefficient. The ratings and weights may be continuously updatedbased on continued tracking of the actions upon which the coefficient isbased. Any type of process or algorithm may be employed for assigning,combining, averaging, and so forth the ratings for each factor and theweights assigned to the factors. In particular embodiments,social-networking system 160 may determine coefficients usingmachine-learning algorithms trained on historical actions and past userresponses, or data farmed from users by exposing them to various optionsand measuring responses. Although this disclosure describes calculatingcoefficients in a particular manner, this disclosure contemplatescalculating coefficients in any suitable manner.

In particular embodiments, social-networking system 160 may calculate acoefficient based on a user's actions. Social-networking system 160 maymonitor such actions on the online social network, on a third-partysystem 170, on other suitable systems, or any combination thereof. Anysuitable type of user actions may be tracked or monitored. Typical useractions include viewing profile pages, creating or posting content,interacting with content, tagging or being tagged in images, joininggroups, listing and confirming attendance at events, checking-in atlocations, liking particular pages, creating pages, and performing othertasks that facilitate social action. In particular embodiments,social-networking system 160 may calculate a coefficient based on theuser's actions with particular types of content. The content may beassociated with the online social network, a third-party system 170, oranother suitable system. The content may include users, profile pages,posts, news stories, headlines, instant messages, chat roomconversations, emails, advertisements, pictures, video, music, othersuitable objects, or any combination thereof. Social-networking system160 may analyze a user's actions to determine whether one or more of theactions indicate an affinity for subject matter, content, other users,and so forth. As an example and not by way of limitation, if a user maymake frequently posts content related to “coffee” or variants thereof,social-networking system 160 may determine the user has a highcoefficient with respect to the concept “coffee”. Particular actions ortypes of actions may be assigned a higher weight and/or rating thanother actions, which may affect the overall calculated coefficient. Asan example and not by way of limitation, if a first user emails a seconduser, the weight or the rating for the action may be higher than if thefirst user simply views the user-profile page for the second user.

In particular embodiments, social-networking system 160 may calculate acoefficient based on the type of relationship between particularobjects. Referencing the social graph 200, social-networking system 160may analyze the number and/or type of edges 206 connecting particularuser nodes 202 and concept nodes 204 when calculating a coefficient. Asan example and not by way of limitation, user nodes 202 that areconnected by a spouse-type edge (representing that the two users aremarried) may be assigned a higher coefficient than a user nodes 202 thatare connected by a friend-type edge. In other words, depending upon theweights assigned to the actions and relationships for the particularuser, the overall affinity may be determined to be higher for contentabout the user's spouse than for content about the user's friend. Inparticular embodiments, the relationships a user has with another objectmay affect the weights and/or the ratings of the user's actions withrespect to calculating the coefficient for that object. As an exampleand not by way of limitation, if a user is tagged in first photo, butmerely likes a second photo, social-networking system 160 may determinethat the user has a higher coefficient with respect to the first photothan the second photo because having a tagged-in-type relationship withcontent may be assigned a higher weight and/or rating than having alike-type relationship with content. In particular embodiments,social-networking system 160 may calculate a coefficient for a firstuser based on the relationship one or more second users have with aparticular object. In other words, the connections and coefficientsother users have with an object may affect the first user's coefficientfor the object. As an example and not by way of limitation, if a firstuser is connected to or has a high coefficient for one or more secondusers, and those second users are connected to or have a highcoefficient for a particular object, social-networking system 160 maydetermine that the first user should also have a relatively highcoefficient for the particular object. In particular embodiments, thecoefficient may be based on the degree of separation between particularobjects. The lower coefficient may represent the decreasing likelihoodthat the first user will share an interest in content objects of theuser that is indirectly connected to the first user in the social graph200. As an example and not by way of limitation, social-graph entitiesthat are closer in the social graph 200 (i.e., fewer degrees ofseparation) may have a higher coefficient than entities that are furtherapart in the social graph 200.

In particular embodiments, social-networking system 160 may calculate acoefficient based on location information. Objects that aregeographically closer to each other may be considered to be more relatedor of more interest to each other than more distant objects. Inparticular embodiments, the coefficient of a user towards a particularobject may be based on the proximity of the object's location to acurrent location associated with the user (or the location of a clientsystem 130 of the user). A first user may be more interested in otherusers or concepts that are closer to the first user. As an example andnot by way of limitation, if a user is one mile from an airport and twomiles from a gas station, social-networking system 160 may determinethat the user has a higher coefficient for the airport than the gasstation based on the proximity of the airport to the user.

In particular embodiments, social-networking system 160 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, social-networking system 160 may provideinformation that is relevant to user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest. In particular embodiments, social-networkingsystem 160 may generate content based on coefficient information.Content objects may be provided or selected based on coefficientsspecific to a user. As an example and not by way of limitation, thecoefficient may be used to generate media for the user, where the usermay be presented with media for which the user has a high overallcoefficient with respect to the media object. As another example and notby way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object. In particular embodiments,social-networking system 160 may generate search results based oncoefficient information. Search results for a particular user may bescored or ranked based on the coefficient associated with the searchresults with respect to the querying user. As an example and not by wayof limitation, search results corresponding to objects with highercoefficients may be ranked higher on a search-results page than resultscorresponding to objects having lower coefficients.

In particular embodiments, social-networking system 160 may calculate acoefficient in response to a request for a coefficient from a particularsystem or process. To predict the likely actions a user may take (or maybe the subject of) in a given situation, any process may request acalculated coefficient for a user. The request may also include a set ofweights to use for various factors used to calculate the coefficient.This request may come from a process running on the online socialnetwork, from a third-party system 170 (e.g., via an API or othercommunication channel), or from another suitable system. In response tothe request, social-networking system 160 may calculate the coefficient(or access the coefficient information if it has previously beencalculated and stored). In particular embodiments, social-networkingsystem 160 may measure an affinity with respect to a particular process.Different processes (both internal and external to the online socialnetwork) may request a coefficient for a particular object or set ofobjects. Social-networking system 160 may provide a measure of affinitythat is relevant to the particular process that requested the measure ofaffinity. In this way, each process receives a measure of affinity thatis tailored for the different context in which the process will use themeasure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 11/503093, filed 11 Aug. 2006, U.S. patentapplication Ser. No. 12/977027, filed 22 Dec. 2010, U.S. patentapplication Ser. No. 12/978265, filed 23 Dec. 2010, and U.S. patentapplication Ser. No. 13/632869, filed 1 Oct. 2012, each of which isincorporated by reference.

In particular embodiments, one or more objects (e.g., content or othertypes of objects) of a computing system may be associated with one ormore privacy settings. The one or more objects may be stored on orotherwise associated with any suitable computing system or application,such as, for example, a social-networking system 160, a client system130, a third-party system 170, a social-networking application, amessaging application, a photo-sharing application, or any othersuitable computing system or application. Although the examplesdiscussed herein are in the context of an online social network, theseprivacy settings may be applied to any other suitable computing system.Privacy settings (or “access settings”) for an object may be stored inany suitable manner, such as, for example, in association with theobject, in an index on an authorization server, in another suitablemanner, or any suitable combination thereof. A privacy setting for anobject may specify how the object (or particular information associatedwith the object) can be accessed, stored, or otherwise used (e.g.,viewed, shared, modified, copied, executed, surfaced, or identified)within the online social network. When privacy settings for an objectallow a particular user or other entity to access that object, theobject may be described as being “visible” with respect to that user orother entity. As an example and not by way of limitation, a user of theonline social network may specify privacy settings for a user-profilepage that identify a set of users that may access work-experienceinformation on the user-profile page, thus excluding other users fromaccessing that information.

In particular embodiments, privacy settings for an object may specify a“blocked list” of users or other entities that should not be allowed toaccess certain information associated with the object. In particularembodiments, the blocked list may include third-party entities. Theblocked list may specify one or more users or entities for which anobject is not visible. As an example and not by way of limitation, auser may specify a set of users who may not access photos albumsassociated with the user, thus excluding those users from accessing thephoto albums (while also possibly allowing certain users not within thespecified set of users to access the photo albums). In particularembodiments, privacy settings may be associated with particularsocial-graph elements. Privacy settings of a social-graph element, suchas a node or an edge, may specify how the social-graph element,information associated with the social-graph element, or objectsassociated with the social-graph element can be accessed using theonline social network. As an example and not by way of limitation, aparticular concept node 204 corresponding to a particular photo may havea privacy setting specifying that the photo may be accessed only byusers tagged in the photo and the tagged user's friends. In particularembodiments, privacy settings may allow users to opt in to or opt out ofhaving their content, information, or actions stored/logged by thesocial-networking system 160 or shared with other systems (e.g., athird-party system 170). Although this disclosure describes usingparticular privacy settings in a particular manner, this disclosurecontemplates using any suitable privacy settings in any suitable manner.

In particular embodiments, privacy settings may be based on one or morenodes or edges of a social graph 200. A privacy setting may be specifiedfor one or more edges 206 or edge-types of social graph 200, or withrespect to one or more nodes 202, 204 or node-types of social graph 200.The privacy settings applied to a particular edge 206 connecting twonodes may control whether the relationship between the two entitiescorresponding to the nodes is visible to other users of the onlinesocial network. Similarly, the privacy settings applied to a particularnode may control whether the user or concept corresponding to the nodeis visible to other users of the online social network. As an exampleand not by way of limitation, a first user may share an object to thesocial-networking system 160. The object may be associated with aconcept node 204 connected to a user node 202 of the first user by anedge 206. The first user may specify privacy settings that apply to aparticular edge 206 connecting to the concept node 204 of the object, ormay specify privacy settings that apply to all edges 206 connecting tothe concept node 204. As another example and not by way of limitation,the first user may share a set of objects of a particular object-type(e.g., a set of images). The first user may specify privacy settingswith respect to all objects associated with the first user of thatparticular object-type as having a particular privacy setting (e.g.,specifying that all images posted by the first user are visible only tofriends of the first user and/or users tagged in the images).

Privacy settings associated with an object may specify any suitablegranularity of permitted access or denial of access. As an example andnot by way of limitation, access or denial of access may be specifiedfor particular users (e.g., only me, my roommates, my boss), userswithin a particular degrees-of-separation (e.g., friends,friends-of-friends), user groups (e.g., the gaming club, my family),user networks (e.g., employees of particular employers, students oralumni of particular university), all users (“public”), no users(“private”), users of third-party systems 170, particular applications(e.g., third-party applications, external websites), other suitableentities, or any suitable combination thereof. In particularembodiments, access or denial of access may be specified by time ordate. As an example and not by way of limitation, a user may specifythat a particular image uploaded by the user is visible to the user'sfriends for the next week. As another example and not by way oflimitation, a company may post content related to a product releaseahead of the official launch, and specify that the content may not bevisible to other users until after the product launch. In particularembodiments, access or denial of access may be specified by geographiclocation. As an example and not by way of limitation, a user may sharean object and specify that only users in the same city may access orview the object. As another example and not by way of limitation, afirst user may share an object and specify that the object is visible tosecond users only while the first user is in a particular location. Ifthe first user leaves the particular location, the object may no longerbe visible to the second users. As another example and not by way oflimitation, a first user may specify that an object is visible only tosecond users within a threshold distance from the first user. If thefirst user subsequently changes location, the original second users withaccess to the object may lose access, while a new group of second usersmay gain access as they come within the threshold distance of the firstuser. Although this disclosure describes particular granularities ofpermitted access or denial of access, this disclosure contemplates anysuitable granularities of permitted access or denial of access.

In particular embodiments, one or more servers 162 may beauthorization/privacy servers for enforcing privacy settings. Inresponse to a request from a user (or other entity) for a particularobject stored in a data store 164, the social-networking system 160 maysend a request to the data store 164 for the object. The request mayidentify the user associated with the request and the object may be sentonly to the user (or a client system 130 of the user) if theauthorization server determines that the user is authorized to accessthe object based on the privacy settings associated with the object. Ifthe requesting user is not authorized to access the object, theauthorization server may prevent the requested object from beingretrieved from the data store 164 or may prevent the requested objectfrom be sent to the user. In the search-query context, an object may beprovided as a search result only if the querying user is authorized toaccess the object, e.g., the privacy settings for the object allow it tobe surfaced to, discovered by, or otherwise visible to the queryinguser. In particular embodiments, an object may represent content that isvisible to a user through a newsfeed of the user. As an example and notby way of limitation, one or more objects may be visible to a user's“Trending” page. In particular embodiments, an object may correspond toa particular user. The object may be content associated with theparticular user, or may be the particular user's account or informationstored on an online social network, or other computing system As anexample and not by way of limitation, a first user may view one or moresecond users of an online social network through a “People You May Know”function of the online social network, or by viewing a list of friendsof the first user. As an example and not by way of limitation, a firstuser may specify that they do not want to see objects associated with aparticular second user in their newsfeed or friends list. If the privacysettings for the object do not allow it to be surfaced to, discoveredby, or visible to the user, the object may be excluded from the searchresults. Although this disclosure describes enforcing privacy settingsin a particular manner, this disclosure contemplates enforcing privacysettings in any suitable manner.

In particular embodiments, different objects of the same type associatedwith a user may have different privacy settings. Different types ofobjects associated with a user may have different types of privacysettings. As an example and not by way of limitation, a first user mayspecify that the first user's status updates are public, but any imagesshared by the first user are visible only to the first user's friends onthe online social network. As another example and not by way oflimitation, a user may specify different privacy settings for differenttypes of entities, such as individual users, friends-of-friends,followers, user groups, or corporate entities. As another example andnot by way of limitation, a first user may specify a group of users thatmay view videos posted by the first user, while keeping the videos frombeing visible to the first user's employer. In particular embodiments,different privacy settings may be provided for different user groups oruser demographics. As an example and not by way of limitation, a firstuser may specify that other users that attend the same university as thefirst user may view the first user's pictures, but that other users thatare family members of the first user may not view those same pictures.

In particular embodiments, the social-networking system 160 may provideone or more default privacy settings for each object of a particularobject-type. A privacy setting for an object that is set to a defaultmay be changed by a user associated with that object. As an example andnot by way of limitation, all images posted by a first user may have adefault privacy setting of being visible only to friends of the firstuser and, for a particular image, the first user may change the privacysetting for the image to be visible to friends and friends-of-friends.

In particular embodiments, changes to privacy settings may take effectretroactively, affecting the visibility of objects and content sharedprior to the change. As an example and not by way of limitation, a firstuser may share a first image and specify that the first image is to bepublic to all other users. At a later time, the first user may specifythat any images shared by the first user should be made visible only toa first user group. The social-networking system 160 may determine thatthis privacy setting also applies to the first image and make the firstimage visible only to the first user group. In particular embodiments,the change in privacy settings may take effect only going forward.Continuing the example above, if the first user changes privacy settingsand then shares a second image, the second image may be visible only tothe first user group, but the first image may remain visible to allusers. In particular embodiments, in response to a user action to changea privacy setting, the social-networking system 160 may further promptthe user to indicate whether the user wants to apply the changes to theprivacy setting retroactively. In particular embodiments, a user changeto privacy settings may be a one-off change specific to one object. Inparticular embodiments, a user change to privacy may be a global changefor all objects associated with the user.

In particular embodiments, privacy settings may allow a user to specifywhether particular applications or processes may access, store, or useparticular objects or information associated with the user. The privacysettings may allow users to opt in or opt out of having objects orinformation accessed, stored, or used by specific applications orprocesses. The social-networking system 160 may access such informationin order to provide a particular function or service to the user,without the social-networking system 160 having access to thatinformation for any other purposes. Before accessing, storing, or usingsuch objects or information, the social-networking system 160 may promptthe user to provide privacy settings specifying which applications orprocesses, if any, may access, store, or use the object or informationprior to allowing any such action. As an example and not by way oflimitation, a first user may transmit a message to a second user via anapplication related to the online social network (e.g., a messagingapp), and may specify privacy settings that such messages should not bestored by the social-networking system 160. As another example and notby way of limitation, social-networking system 160 may havefunctionalities that may use as inputs personal or biometric informationof the user. A user may opt to make use of these functionalities toenhance their experience on the online social network. As an example andnot by way of limitation, a user may provide personal or biometricinformation to the social-networking system 160. The user's privacysettings may specify that such information may be used only forparticular processes, such as authentication, and further specify thatsuch information may not be shared with any third-party system 170 orused for other processes or applications associated with thesocial-networking system 160. As yet another example and not by way oflimitation, an online social network may provide functionality for auser to provide voice-print recordings to the online social network. Asan example and not by way of limitation, if a user wants to utilize thisfunction of the online social network, the user may provide a voicerecording of his or her own voice to provide a status update on theonline social network. The recording of the voice-input may be comparedto a voice print of the user to determine what words were spoken by theuser. The user's privacy setting may specify that such voice recordingmay be used only for voice-input purposes (e.g., to send voice messages,to improve voice recognition in order to use voice-operated features ofthe online social network), and further specify that such voicerecording may not be shared with any third-party system 170 or used byother processes or applications associated with the social-networkingsystem 160.

In particular embodiments, privacy settings may allow a user to specifywhether mood or sentiment information associated with the user may bedetermined, and whether particular applications or processes may access,store, or use such information. The privacy settings may allow users toopt in or opt out of having mood or sentiment information accessed,stored, or used by specific applications or processes. Thesocial-networking system 160 may predict or determine a mood orsentiment associated with a user based on, for example, inputs providedby the user and interactions with particular objects, such as pages orcontent viewed by the user, posts or other content uploaded by the user,and interactions with other content of the online social network. Inparticular embodiments, social-networking system 160 may use a user'sprevious activities and calculated moods or sentiments to determine apresent mood or sentiment. A user who wants to enable this functionalitymay indicate in their privacy settings that they opt in tosocial-networking system 160 receiving the inputs necessary to determinethe mood or sentiment. As an example and not by way of limitation,social-networking system 160 may determine that a default privacysetting is to not receive any information necessary for determining moodor sentiment until there is an express indication from a user thatsocial-networking system 160 may do so. In particular embodiments,social-networking system 160 may use the predicted mood or sentiment toprovide recommendations or advertisements to the user. In particularembodiments, if a user desires to make use of this function for specificpurposes or applications, additional privacy settings may be specifiedby the user to opt in to using the mood or sentiment information for thespecific purposes or applications. As an example and not by way oflimitation, social-networking system 160 may use the user's mood orsentiment to provide newsfeed items, pages, friends, or advertisementsto a user. The user may specify in their privacy settings thatsocial-networking system 160 may determine the user's mood or sentiment.The user may then be asked to provide additional privacy settings toindicate the purposes for which the user's mood or sentiment may beused. The user may indicate that social-networking system 160 may usehis or her mood or sentiment to provide newsfeed content and recommendpages, but not for recommending friends or advertisements.Social-networking system 160 may then only provide newsfeed content orpages based on user mood or sentiment, and may not use that informationfor any other purpose, even if not expressly prohibited by the privacysettings.

In particular embodiments, the social-networking system 160 maytemporarily access, store, or use particular objects or informationassociated with a user in order to facilitate particular actions of thefirst user, and may subsequently delete the objects or information. Asan example and not by way of limitation, a first user may transmit amessage to a second user, and the social-networking system 160 maytemporarily store the message in a data store 164 until the second userhas view or downloaded the message, at which point the social-networkingsystem 160 may delete the message from the data store 164. As anotherexample and not by way of limitation, continuing with the prior example,the message may be stored for a specified period of time (e.g., 2weeks), after which point the social-networking system 160 may deletethe message from the data store 164. In particular embodiments, a usermay specify whether particular types of objects or informationassociated with the user may be accessed, stored, or used by thesocial-networking system 160. As an example and not by way oflimitation, a user may specify that images sent by the user through thesocial-networking system 160 may not be stored by the social-networkingsystem 160. As another example and not by way of limitation, a firstuser may specify that messages sent from the first user to a particularsecond user may not be stored by the social-networking system 160. Asyet another example and not by way of limitation, a user may specifythat all objects sent via a particular application may be saved by thesocial-networking system 160.

In particular embodiments, privacy settings may allow a user to specifywhether particular objects or information associated with the user maybe accessed from particular client systems 130 or third-party systems170. The privacy settings may allow users to opt in or opt out of havingobjects or information accessed from a particular device (e.g., thephone book on a user's smart phone), from a particular application(e.g., a messaging app), or from a particular system (e.g., an emailserver). The social-networking system 160 may provide default privacysettings with respect to each device, system, or application, and/or theuser may be prompted to specify a particular privacy setting for eachcontext. As an example and not by way of limitation, a user may utilizea location-services feature of the social-networking system 160 toprovide recommendations for restaurants or other places in proximity tothe user. The user's default privacy settings may specify that thesocial-networking system 160 may use location information provided froma client device 130 of the user to provide the location-based services,but that the social-networking system 160 may not store the locationinformation of the user or provide it to any third-party system 170. Theuser may then update the privacy settings to allow location informationto be used by a third-party image-sharing application in order togeo-tag photos.

In particular embodiments, the social-networking system 160 maydetermine that a first user may want to change one or more privacysettings in response to a trigger action associated with the first user.The trigger action may be any suitable action on the online socialnetwork. As an example and not by way of limitation, a trigger actionmay be a change in the relationship between a first and second user ofthe online social network (e.g., “un-friending” a user, changing therelationship status between the users). In particular embodiments, upondetermining that a trigger action has occurred, the social-networkingsystem 160 may prompt the first user to change the privacy settingsregarding the visibility of objects associated with the first user. Theprompt may redirect the first user to a workflow process for editingprivacy settings with respect to one or more entities associated withthe trigger action. The privacy settings associated with the first usermay be changed only in response to an explicit input from the firstuser, and may not be changed without the approval of the first user. Asan example and not by way of limitation, the workflow process mayinclude providing the first user with the current privacy settings withrespect to the second user or to a group of users (e.g., un-tagging thefirst user or second user from particular objects, changing thevisibility of particular objects with respect to the second user orgroup of users), and receiving an indication from the first user tochange the privacy settings based on any of the methods describedherein, or to keep the existing privacy settings.

In particular embodiments, a user may need to provide verification of aprivacy setting before allowing the user to perform particular actionson the online social network, or to provide verification before changinga particular privacy setting. When performing particular actions orchanging particular privacy setting, a prompt may be presented to theuser to remind the user of his or her current privacy settings andasking the user to verify the privacy settings with respect to theparticular action. Furthermore, a user may need to provide confirmation,double-confirmation, authentication, or other suitable types ofverification before proceeding with the particular action, and theaction may not be complete until such verification is provided. As anexample and not by way of limitation, a user's default privacy settingsmay indicate that a person's relationship status is visible to all users(i.e., “public”). However, if the user changes his or her relationshipstatus, the social-networking system 160 may determine that such actionmay be sensitive and may prompt the user to confirm that his or herrelationship status should remain public before proceeding. As anotherexample and not by way of limitation, a user's privacy settings mayspecify that the user's posts are visible only to friends of the user.However, if the user changes the privacy setting for his or her posts tobeing public, the social-networking system 160 may prompt the user witha reminder of that the user's current privacy settings of being visibleonly to friends, and a warning that this change will make all of theusers past posts visible to the public. The user may then be required toprovide a second verification, input authentication credentials, orprovide other types of verification before proceeding with the change inprivacy settings. In particular embodiments, a user may need to provideverification of a privacy setting on a periodic basis. A prompt orreminder may be periodically sent to the user based either on timeelapsed or a number of user actions. As an example and not by way oflimitation, the social-networking system 160 may send a reminder to theuser to confirm his or her privacy settings every six months or afterevery ten photo posts. In particular embodiments, privacy settings mayalso allow users to control access to the objects or information on aper-request basis. As an example and not by way of limitation, thesocial-networking system 160 may notify the user whenever a third-partysystem 170 attempts to access information associated with the user, andrequire the user to provide verification that access should be allowedbefore proceeding.

In particular embodiments a client system 130 (e.g., a mobile device) ofa first user may launch a video-call session to enable a video streamfor display in a small-overlay-window on a display of the client system130 of the first user. The client system 130 of the first user mayreceive a video stream comprising video captured at a client system 130of a second user. The client system 130 of the first user may displaythe video stream in the small-overlay-window. The small-overlay-windowmay be positioned over an active application running on the clientsystem 130 of the first user. Displaying video streams in asmall-overlay-window (or any subregion smaller than the entire region)may be advantageous to users who need to multitask. A user may be abledo other tasks such as composing emails, watching videos, or playinggames, while simultaneously engaging in a video-call session. A user maybe able to do several of these activities over an extended time periodwithout a break in continuity, in context, or otherwise. As an exampleand not by way of limitation, a user may be playing a game on the user'sclient system 130 when a friend initiates a video-call session. In thisexample, the user may accept the video call from the friend withoutinterruption to the user's game, allowing for a seamless user experiencewhere accepting a call causes minimal interference with the user'scurrent activities. As another example and not by way of limitation, theuser may be engaged in a video-call session with a friend and may decideto watch a video suggested by the friend. In this example, the user maylaunch an application associated with a video-sharing platform and watchthe video without any interruption to the ongoing video-call session.The methods described herein may also be useful for users who want tocollaborate on an activity or otherwise engage in the activity together.As an example and not by way of limitation, multiple users may beworking on a single crossword puzzle together in a crossword-puzzleapplication. In this example, the users may want to be engaged in avideo-call session among themselves while they collaborate on solvingthe crossword puzzle. As another example and not by way of limitation,multiple users may want to watch a TV show together while being engagedin a video-call session among themselves.

As used herein, the term “communications application” refers to anyapplication that may be used for communications among users, includingtext, video, or audio communications. As an example and not by way oflimitation, a communications application may include a chat or messengerapplication, a phone application, or another such suitable application.As used herein, the term “call session” refers to any communicationbetween two or more users over their respective client systems involvingaudio, video, and/or other media. As used herein, the term “video-callsession” refers to a call session that includes at least video. Whilethis disclosure focuses on describing the display of video streamsduring video-call sessions, this disclosure contemplates displayingvideo streams in other contexts. As an example and not by way oflimitation, video streams that may be displayed using the methods ofthis disclosure may include a stream from a live broadcast. As anotherexample and not by way of limitation, the video streams may includevideo from a pre-recorded video (e.g., stored on the client system 130and played using a video-player application) or a video from an onlinevideo-sharing platform. As another example, a user may use the describedfeatures herein to watch multiple video streams simultaneously on asingle client system 130 (e.g., a TV show, a video stream from a cameramonitoring the user's baby, a tennis game on a sports channel).Furthermore, while this disclosure focuses on displaying video streamsin small-overlay-windows on a display, this disclosure contemplatesdisplaying video streams in any suitable display region on the display.

In particular embodiments, a client system 130 (e.g., a mobile device)of a first user may launch a video-call session to enable a video streamfor display in a subregion of a display of the client system 130 of thefirst user. In particular embodiments, the subregion may be asmall-overlay-window. FIG. 3 illustrates a client-system display thatincludes a video stream within a small-overlay-window 310. The clientsystem 130 of FIG. 3 may be the client system 130 of the first user. Inparticular embodiments, in the context of the launched video-callsession, the first user may be a callee-user (i.e., the first user mayhave initiated the video-call session) and the second user may be acaller-user, or vice versa (i.e., it may have been the second user whoinitiated the video-call session). Although this disclosure describeslaunching particular call sessions to enable a particular media streamfor display in a particular display region on a particular system in aparticular manner, this disclosure contemplates launching any suitablesessions to enable any suitable media stream for display in any suitableregion on any suitable system in any suitable manner.

In particular embodiments, the client system 130 of the first user mayreceive a video stream from a client system 130 of a second user. Thevideo stream may include video captured at the client system 130 of thesecond user. As an example and not by way of limitation, FIG. 3 maydepict the display of the client system 130 of the first user, which maybe receiving a video stream 310 of video captured at the client system130 of the second user (e.g., the user “Russell”). In particularembodiments, video may be captured at the client system 130 of the firstuser. This captured video may be sent to the client system 130 of thesecond user as a video stream. In particular embodiments, the videostreams may be sent to and from the client systems 130 directly andwithout any intermediary. As an example and not by way of limitation,the two client systems 130 may be on a peer-to-peer network that enablesthe transmission of data directly between them. As another example andnot by way of limitation, the two client systems 130 may be connectedtogether via Bluetooth, Local Area Network (LAN), or any other suitablemethod. In particular embodiments, the video streams may be sent over anetwork through an intermediary system. As an example and not by way oflimitation, the client system 130 of the second user may send a videostream to a server computing machine associated with an applicationinstalled on the client system 130 of the first and/or the second user(e.g., a communications application on which the video-call session isestablished). The server computing machine may subsequently send thevideo stream to the client system 130 of the first user, such that thevideo stream is received at the client system 130 of the first user fromthe server computing machine. The reverse may occur for sending a videostream from the client system 130 of the first user to the client system130 of the second user. In particular embodiments, the client system 130of the first may initially receive only a request to accept a videostream, which may need to be accepted by the first user before the videostream itself may be sent. Although this disclosure describes receivinga particular media stream from a particular user in a particular manner,this disclosure contemplates receiving any suitable media stream fromany suitable user in any suitable manner.

In particular embodiments, the client system 130 of the first user maydisplay the video stream in a subregion such as the small-overlay-window310 in FIG. 3. In particular embodiments, the client system 130 of thefirst user may receive the video stream but may not display the videostream until it receives an input from the first user confirming thatthe video stream may be displayed. In particular embodiments, thesmall-overlay-window may be positioned over an active applicationrunning on the client system 130 of the first user. As an example andnot by way of limitation, referencing FIG. 3, the small-overlay-window310 may display the video stream captured at the client system 130 ofthe second user. In particular embodiments, the operating system of theclient system 130 may be able to have two or more applications activelyrunning in the foreground simultaneously, while the video-call sessionis ongoing. As an example and not by way of limitation, while thevideo-call session is still established, the first user may launch aninterface of a second application (i.e., an application other than thecommunications application on which the video-call session isestablished). In this example, the small-overlay-window persists as asmall-overlay-window positioned over the interface of the third-partyapplication, continuing to stream the video. FIG. 4 illustrates aclient-system display with a small-overlay-window positioned over aninterface of a second application. As an example and not by way oflimitation, referencing FIG. 4, the second application may be athird-party application associated with an image-sharingsocial-networking platform. In this example, the second application maybe actively running in the foreground simultaneously with thecommunications application on which the video-call session isestablished. In particular embodiments, the first user may be able toswitch among several applications while the small-overlay-window isdisplayed in a persistent manner. As an example and not by way oflimitation, the first user may have launched the video-call session withonly the communications application on the foreground, switched to asecond video-player application to view a video, and then switched to athird video-game application to play a video game. In this example, thesmall-overlay-window may have persisted through all the differentinterfaces of the different applications. In particular embodiments, thesmall-overlay-window may be displayed until the client system 130 of thefirst user receives a user input from the first user for dismissing thesmall-overlay-window, receives a user input from the first user forterminating the call session, or otherwise has the call sessionterminated (e.g., if the second user terminated the call, if theconnection was lost). In particular embodiments, there may be one ormore predefined inputs for dismissing the small-overlay-window. As anexample and not by way of limitation, a user input for dismissing thesmall-overlay-window may be a touch gesture, including, for example,pressing the small-overlay-window and dragging it “off” (e.g., towardthe edge of) the screen of the client system 130 of the first user. Uponreceipt of a predefined user input dismissing the small-overlay-window,client system 130 may remove small-overlay-window from the display ofthe client system 130 of the first user. The user input for dismissingthe small-overlay window may simply be an input requesting that thevideo-stream display be suspended while keeping the video-call sessionalive. Alternatively, it may an input requesting that the associatedvideo-call session be terminated. Each of these user inputs maycorrespond to specific predefined inputs. As an example and not by wayof limitation, the input for simply suspending the video-stream mayinvolve a horizontal swiping gesture, while the input for terminatingthe video-call session may involve a vertical swiping gesture.Techniques for dismissing elements (which may includesmall-overlay-windows) are described in further detail in U.S.application Ser. No. 14/099,561, filed 6 Dec. 2013, and U.S. applicationSer. No. 14/594,437, filed 12 Jan. 2015, each of which is incorporatedherein by reference. Although this disclosure describes displaying aparticular media stream in a particular display region in a particularmanner, this disclosure contemplates displaying any suitable mediastream in any suitable region in any suitable manner.

In particular embodiments, the small-overlay-window may have a defaultposition, size, or shape (which may also include the shape of a frame ofthe small-overlay window). In particular embodiments, the defaults maybe determined based on a relationship between the first user and thesecond user. As an example and not by way of limitation, in the casewhere the second user is the spouse of the first user, the default shapefor the respective small-overlay-window may be the shape of a heart oranother suitable shape recognizing the existing relationship. As anotherexample and not by way of limitation, in the case where the second useris a coworker of the first user, the default shape may be the shape of abriefcase. In these examples, the relationship may be determined basedon social-graph information retrieved from a social graph of thesocial-networking system 160. In particular embodiments, the defaultsmay be based on a preference of the second user, generally. As anexample and not by way of limitation, the second user may have expresseda user preference for pandas (e.g., explicitly indicating so in theuser's profile information, belonging to a panda-conservation group,“liking” a number of posts about pandas on the online social network),in which case a default small-overlay-window may be a circle showing thevideo stream (as in FIG. 3), but within a frame in the form of a panda.The user preference may be stored as social-graph information on thesocial-networking system 160, or in a user preference file, generally(e.g., on a server associated with a communications application, on theclient system 130 of the first user, on the client system 130 of thesecond user, on another client system 130 associated with the seconduser). Similarly, in particular embodiments, the defaults may be basedon a preference the first user. The user preference may be stored associal-graph information on the social-networking system 160, or in auser preference file, generally (e.g., on a server associated with acommunications application, on the client system 130 of the first user,on the client system 130 of the second user, on another client system130 associated with the first user). In particular embodiments, thedefaults may be based on a history of usage of othersmall-overlay-windows by the first user. As an example and not by way oflimitation, if the first user frequently positions small-overlay-windowsin past video-call sessions at a position represented by coordinates (x,y) (e.g., a majority of the time, more frequently than any otherposition), the default position may be at (x, y). As another example andnot by way of limitation, if the first user positioned thesmall-overlay-window at (x, y) in the most recent video-call session,the default position may be at (x, y). In this example, the defaultposition may be updated after every use of the small-overlay-window tomirror the most recent usage. The history of usage may be based on usagedata from multiple client systems 130 that are associated with the firstuser. As an example and not by way of limitation, the first user mayhave used small-overlay-windows during video-call sessions on a laptop,a work phone, and a personal phone. In this example, usage data may becollected from all three devices to determine a history of usage for thefirst user. In particular embodiments, the defaults may be based on astyle or theme associated with the active application over which thesmall-overlay-window is displayed. As an example and not by way oflimitation, the first user may be playing a video game associated withthe TV Show and movie franchise Star Trek, in which case, thesmall-overlay-window may default to a Star Trek theme (e.g., it may bein the shape of the fictional starship USS Enterprise). In particularembodiments, the defaults may be based on a user interface of the activeapplication over which the small-overlay-window is positioned. Certainpositions, sizes, or shapes may be more optimal for particular userinterfaces. As an example and not by way of limitation, if the activeapplication is a video-player application, a small-overlay-window may beof a smaller size (e.g., to allow the first user to have aless-obstructed view of the video) than if the active application is amusic-player (e.g., in which case, the user may not mind as much if theview is obstructed). As another example and not by way of limitation,for a communications application (e.g., the communications applicationbeing used to facilitate the current video-call session), the defaultposition of the small-overlay-window may be away from the bottom, wherethe latest chat messages may be displayed, or where there may beuser-input fields (e.g., a text field where characters for a new chatmessage may be entered). As yet another example and not by way oflimitation, for a news-reader application, the default position of thesmall-overlay-window may be away from areas that users generally tend tofocus on when reading news articles. In this example, the defaultposition may be in a bottom corner of the screen. Relatedly, inparticular embodiments, the defaults may be based on the specificcontent being displayed in the active application over which thesmall-overlay-window is positioned. As an example and not by way oflimitation, the default position, size, and/or shape of thesmall-overlay-window may be such that the content is not obscured orsuch that a minimal amount of content is obscured. The defaults may besuch that the small-overlay-window covers only marginal or fringe areasof certain types of content (e.g., photographs, text in an article) onthe display. As an example and not by way of limitation, referencingFIG. 4, the small-overlay window 410 may have been positioned and sizedby default to cover only a small fringe area of the photograph beingviewed in the display. In particular embodiments, the defaults may bebased on the size or shape of the display, which may be limited by thehardware of the client system 130 (e.g., the size of its screen, adisplay-resolution limitation). As an example and not by way oflimitation, the default shape of a screen that is circular may tendtoward a circular shape. As another example and not by way oflimitation, a client system 130 with a relatively small screen size maydefault to a small-overlay-window that is smaller in size than whatwould have been the default in a client system 130 with a larger screensize. In particular embodiments, the client system 130 may display afirst-user-small-overlay-window that includes a video stream captured atthe client system 130 of the first user. In particular embodiments, thefirst-user-small-overlay-window may be displayed concurrently with thesmall-overlay-window. As an example and not by way of limitation,referencing FIG. 3, the first-user-small-overlay-window 320 is displayedalong with the small-overlay-window 310. Thefirst-user-small-overlay-window may be of a different size and shapethan the small-overlay-window. As an example and not by way oflimitation, as illustrated in FIG. 3, thefirst-user-small-overlay-window may be smaller than thesmall-overlay-window. The first-user-small-overlay-window may be locatedin any suitable location on the display of the client system 130. As anexample and not by way of limitation, as illustrated in FIG. 3, thefirst-user-small-overlay-window 320 may overlay a portion of thesmall-overlay-window 310. As another example and not by way oflimitation, the first-user-small-overlay-window may be adjacent to ornear the small-overlay-window. In particular embodiments, thefirst-user-small-overlay-window may be free-floating and may bere-positioned, resized, or reshaped, in the same ways as thesmall-overlay-window can be positioned, resized, or reshaped, asdescribed above. In particular embodiments, thefirst-user-small-overlay-window may itself have a default position,size, or shape, determined based on the same factors as thesmall-overlay-window, as described above.

In particular embodiments, the small-overlay-window (or thefirst-user-small-overlay-window) may be altered in any suitable manner.As an example and not by way of limitation, it may be re-positioned,resized, or reshaped at any time during the video-call session. Thesmall-overlay-window may be altered in response to a corresponding inputby the first user. As an example and not by way of limitation,referencing FIG. 3, the first user may manually re-position thesmall-overlay-window 310, which may be at a position (which may berepresented by the coordinates (x, y)) to a new position (which may berepresented by the coordinates (x′, y′)) on the bottom-right of thescreen by dragging it to the new position (e.g., using a finger on atouch-screen, using a mouse and cursor). As another example and not byway of limitation, the first user may resize the small-overlay-windowwith an appropriate gesture (e.g., spreading two fingers in oppositedirections on a touch-screen, using a cursor to drag the boundaries ofthe small-overlay-window). As another example and not by way oflimitation, the first user may select among different shapes (e.g., froma drop-down menu). In particular embodiments, the small-overlay-window(and/or the first-user-small-overlay-window) may be alteredautomatically during a video-call session, without a user input. Theautomatic-alteration may occur so as to not obscure “focal-regions” orother important areas of an interface the first user is viewing.Focal-regions may include areas of the interface of an activeapplication displaying the content being viewed by the first user (e.g.,the name of a second user “Russell” in FIG. 3, the photograph in FIG. 4,text of an article that the user may be reading, video display areas),input areas (e.g., form input fields such as the input-field 330 in FIG.3, the interactive elements within the input-bar 340), scrolling areas(e.g., a scrolling Rich Site Summary (RSS) feed), banner advertisements,or other such areas. Focal-regions may be further determined based on apredictive-algorithm that calculates the probability of the first userbeing interested in a particular region at a given time. The altering ofthe small-overlay-window may also account for differing levels of userinterest for regions within focal-regions. If a portion of afocal-region has to be obscured, the less-interesting portions may beobscured while the more-interesting portions are left unobscured. As anexample and not by way of limitation, referencing FIG. 3, thepredictive-algorithm may determine that the most recent text messages(e.g., “Omg,” “That's so great”) would be more interesting to the firstuser than previous text messages (e.g., “. . . re you laughing at?”). Asa result, in this example, the small-overlay-window 310 (and thefirst-user-small-overlay-window 320) may obscure the latter rather thanthe former. As another example and not by way of limitation, thepredictive-algorithm may determine that a particular input area is moreinteresting to a user than a different input area. For example, an inputarea in which a user input was recently received may be determined to bemore interesting to the first user than an input area in which a userinput was not as recently received (e.g., where the first user iscomposing an email in an email application, the input area where thelast word was entered may be of higher interest to the user than aninput area where the a previous word was entered). In particularembodiments, the alteration of the small-overlay-window may be performedat a computer server machine that mediates the video-call session (e.g.,a computer server machine associated with a communications application).Alternatively or additionally, the alteration of thesmall-overlay-window may be performed at the client system 130 of thefirst user, or the client system 130 of the second user. Any suitablevisual effects may be used to show the alteration of thesmall-overlay-window. As an example and not by way of limitation,re-positioning, re-sizing, or re-shaping the small-overlay-window maycause it to disappear and subsequently re-appear as asmall-overlay-window in the new position, size, or shape. As anotherexample and not by way of limitation, an animation may be used to showthe transition (e.g., when re-positioning with a dragging gesture, thesmall-overlay-window may appear to move along with the dragginggesture). As another example and not by way of limitation, visualspecial effects may be used to show the transition (e.g., thesmall-overlay-window become translucent as it is re-sized, thesmall-overlay-window leaving a trail of sparks as it is re-positioned).As another example and not by way of limitation, a physics engine may beused to simulate spring movement or other suitable physics-relatedanimations or behaviors of the small-overlay-window as it is beingaltered. In this example, for simulating spring movement, one or morevirtual “springs” may be attached to the small-overlay-window (e.g.,between the origin position of the small-overlay-window and thesmall-overlay-window itself), and the physics engine may use a versionof Hooke's law (P=−kx, where x is the displacement of thesmall-overlay-window from its origin position and k is a spring constantthat may be defined by the physics engine). The physics engine mayimplement algorithms that consider any suitable variables such astension, mass, and damping effect. More information about using aphysics engine to simulate spring movement may be found in U.S.application Ser. No. 13/846,131, filed 18 Mar. 2013, and U.S.application Ser. No. 14/099,535, filed 6 Dec. 2013, each of which isincorporated herein by reference. In particular embodiments, some or allof the qualities of the small-overlay-window may be immutable or mayotherwise not be easily altered. As an example and not by way oflimitation, referencing FIG. 3, the small-overlay-window 310 and thefirst-user-small-overlay-window 320 may be in a fixed position, size, orshape.

In particular embodiments, the small-overlay-window may be generated anddisplayed while the first user is viewing an interface other than one ofthe application that generates the small-overlay-window (e.g., acommunications application). As an example and not by way of limitation,the first user may be playing a game on a video-game application when avideo-call session may be initiated by the second user, in response towhich a video stream from the second user may be displayed in asmall-overlay-window positioned over the video-game application. Thesmall-overlay-window may be generated and displayed without leaving thecontext of the active application (e.g., a video game being played). Itmay function and be displayed independent of activity of the activeapplication or any input the first user performs with respect to theapplication, such that the first user may interact with the activeapplication normally. As an example and not by way of limitation,referencing FIG. 4, the small-overlay-window 410 (and thefirst-user-small-overlay-window 420) may be displayed independent of anyinputs (e.g., activating the interactive element 430) the first userperforms within the application (e.g., an application associated with animage-sharing social-networking platform). As another example and not byway of limitation, again referencing FIG. 4, the first user may scrollthrough the content on the application without it affecting the functionand display of the small-overlay-window 410. The small-overlay-windowmay persist in the portion of a display of the client system 130 (e.g.,a corner of the display) until dismissed (e.g., by a first-user inputdismissing the small-overlay-window, upon termination of the call by thesecond user). When the small-overlay-window is dismissed, the activeapplication may continue to operate normally and without interruption.More on the display and behavior of elements such assmall-overlay-windows overlaying active applications may be found inU.S. patent application Ser. No. 14/594,437, filed 12 Jan. 2015, andU.S. patent application Ser. No. 13/685,431, filed 26 Nov. 2012, each ofwhich is incorporated herein by reference.

In particular embodiments, the video streams that are sent or receivedby either of the client systems 130 may be of any suitable resolution.As an example and not by way of limitation, the video stream received atthe client system 130 of the first user may be a low-resolution versionor a high-resolution version (which, as used herein, are relative terms)of the video captured at the client system 130 of the second user. Inparticular embodiments, there may be a default resolution. As an exampleand not by way of limitation, the video stream may always default tolow-resolution version. In particular embodiments, the default versionmay be determined by a history of past video-call sessions. As anexample and not by way of limitation, if the first user and second userfrequently elect to send and receive low-resolution video streams whenthey engage in video-call sessions (e.g., exceeding a threshold ratio oflow-resolution to high-resolution video streams), the video streams forboth client systems 130 may be configured to send and receivelow-resolution versions by default when they engage in a video-callsession. As another example and not by way of limitation, the currentresolution of the client device 130 of the first user may default to theresolution that was received by the client device 130 of the first userin the most recent video-call session, or the most recent video-callsession with the current second user. In particular embodiments, aclient system 130 receiving a video stream may, at any time during thevideo-call session, request a different version. As an example, theclient system 130 of the first user that is receiving and displaying alow-resolution version of a video stream may receive an input from thefirst user for a high-resolution version. A user input may include asuitable gesture (e.g., on a touch-screen, touching a locationcorresponding to a display of a video stream in a small-overlay-windowwith two fingers and spreading them apart) or may involve a selection ofan option among different options (e.g., right-clicking on a locationcorresponding to a display of a video stream in a small-overlay-windowand selecting an option to expand it to a larger region of the display).As another example and not by way of limitation, when a client system130 does not have sufficient bandwidth, it may automatically request orsend a low-resolution version. In particular embodiments, in response tothe request from the client system 130 receiving the video stream, theclient system 130 sending the video stream may send a high-resolutionversion to the client system 130. In particular embodiments, if there isa computer server machine mediating the video-call session (e.g., onethat is associated with a communications application that is being usedfor the video-call session), the computer server machine may always havethe high-resolution version (i.e., client systems 130 sending the videostream may always send high-resolution versions to the computer servermachine). In such cases, the computer server machine may determine whatversion to relay to the client system 130 receiving the video stream,such that the request would be directed to the computer server machineand not to the client system 130 sending the video stream. In particularembodiments, the version that is sent to the client system 130 of a usermay be of the same type as the video stream that is sent from the clientsystem 130 of the user (i.e., the client systems 130 may be configuredto reciprocate). As an example and not by way of limitation, if during avideo-call session, the client system 130 of the first user requests andreceives a higher-resolution version of the video from the client system130 of the second user, the client system 130 of the first user mayreciprocate by sending, to the client system 130 of the second user, ahigher-resolution of the video captured at the client system 130 of thefirst user.

In particular embodiments, the video streams that are sent or receivedby either of the client systems 130 may be displayed within a regionlarger than a small-overlay-window (e.g., as a full-screen display).FIGS. 5A and 5B illustrate, respectively, a display of a video stream ina small-overlay-window 510, and a display of a video stream in afull-screen display. In particular embodiments, the version of the videothat is received may correspond to the size of the region in which thevideo stream is displayed. As an example and not by way of limitation, avideo stream displayed in a small-overlay-window may be of a lowresolution, while a video stream displayed within a larger region of thedisplay may be of a high resolution. As another example and not by wayof limitation, a video stream displayed in a small-overlay-window thatis of a relatively small size may be of a low resolution, while a videostream displayed in a small-overlay-window that is of a relatively largesize may be of a high resolution. When a video-call session is launched,the display of the video stream may default to being displayed in eithera small-overlay window or a larger region of the display. The type ofdisplay to which a video-stream defaults may be based on the same orsimilar factors used to determine the resolution of the video stream(described above). As an example and not by way of limitation, thedefault may be determined by a history of past video-call sessions. Justas is the case with video resolutions, a client system 130 may at anytime during the video-call session request a different type of display.As an example and not by way of limitation, referencing FIGS. 5A and 5B,the client system 130 of the first user (e.g., a user of thecommunication system 803, the social-networking system 160, thecommunications application) may have requested a larger display (e.g.,in response to a user input, as described above), so that the videostream displayed in the small-overlay-window 510 in FIG. 5A is displayedas a full-screen display, as illustrated in FIG. 5B. In this example,the first-user-small-overlay-window too may be displayed within a largerregion of the display, as illustrated in FIG. 5B. The reverse may occurwith a similar request from the client system 130 of the first user fora smaller display (e.g., referencing FIG. 5A, resulting in the displayof the video stream in the small-overlay-window 510). In particularembodiments, the switch between the small-overlay-window display and thelarger-region display may occur locally without the client system 130having to send a request for a smaller or larger display. In such acase, the same video stream data may be used to display the video streamin the desired display region. As an example and not by way oflimitation, in the middle of a video-call session, a first user viewinga video stream in a small-overlay-window may submit a user input (e.g.,using the same or similar inputs described above in the context ofswitching between different video resolutions) as for a larger display,and the client system 130 of the first user may locally cause the videostream to be displayed in a display region larger than thesmall-overlay-window. In this example, the client system 130 of thefirst user may simply enlarge the video stream currently being displayedin the small-overlay-window. Any portion of the video stream that waspreviously cropped to fit in the small-overlay-window may be displayedin the larger display region if it is determined that such a display isoptimal given the larger display region.

In particular embodiments, the video stream may be a cropped version ofthe video captured at the client system 130 sending the video stream(e.g., the client system 130 of the first user). In particularembodiments, the cropped version may include images from the video(i.e., the sequence of images that make up the video) captured at theclient system 130 of the second user cropped using an object-trackingfeature, the object-tracking feature cropping the images to fit within athreshold distance of a focal point. As an example and not by way oflimitation, if the video stream needs to be displayed in asmall-overlay-window that is in the shape of a square, the video may becropped into a square that fits within a threshold distance from a focalpoint (which may be described geometrically as a circle). The thresholddistance may be a function of the size and shape of the region in whichthe video stream is displayed (e.g., the small-overlay-window). As anexample and not by way of limitation, there may be a higher thresholddistance for a larger region of the display than a smaller region of thedisplay. The focal point may be a point in the images that is ofinterest to the user. As an example and not by way of limitation, thefocal point may be a face, a family pet, a moving object, an object thatis currently in focus, or any other suitable object that may be ofinterest to the user. In particular embodiments, the object-trackingfeature may further recognize different objects in the images, rank thedifferent object based on their respective identities, and determine thefocal point based on their ranks (e.g., selecting the highest-rankedobject as the focal point). As an example and not by way of limitation,an object that is recognized to be a human face may be ranked higherthan an object that is recognized to be a chair. Additional factors,such as proximity to a location on the image, may influence therankings. As an example and not by way of limitation, a face that is farfrom the center of an image may be ranked lower than a face that iscloser to the center of the image (or even a chair that is closer to thecenter of the image). More information about recognizing objects inimages may be found in U.S. application Ser. No. 13/959,446, filed 5Aug. 2013, and U.S. application Ser. No. 14/983,385, filed 29 Dec. 2015,each of which is incorporated herein by reference. In particularembodiments, the cropped version may not use an object-tracking featureand may simply set the focal point to be at a pre-determined location inthe images (e.g., the center of the images). The cropping of the videostream may be performed either at the client system 130 sending thevideo (e.g., the client system 130 of the second user), or at a computerserver machine mediating the video-call session (if one exists). Inparticular embodiments, cropping may only be performed when a videostream needs to be displayed in a small-overlay window.

In particular embodiments, multiple video streams from client systems130 of multiple second users may be received and displayedsimultaneously on the client system 130 of the first user. As an exampleand not by way of limitation, the first user may be engaged in a groupchat including multiple users. As another example and not by way oflimitation, the first user may be engaged in multiple unrelatedvideo-call sessions (e.g., the first user many be receiving asilent-video stream from a spouse while verbally conversing over a videocall with a coworker). The video streams may be displayed withinmultiple small-overlay-windows, multiple larger display regions, or anycombination thereof. As an example and not by way of limitation, a videostream from one second user may be displayed as a full-screen display,and a video stream from another second user may be displayed within asmall-overlay-window. In particular embodiments, eachsmall-overlay-window or larger display region may have unique defaultpositions, sizes, and/or shapes (which may be determined based on thefactors described above). As an example and not by way of limitation, asmall-overlay-window with a video stream from the first user's spousemay be in the shape of a heart, while a small-overlay-window with avideo stream from the first user's coworker may be in the shape of abriefcase. In particular embodiments, when there are multiple videostreams being displayed, the display region (e.g., thesmall-overlay-window) associated with a dominant speaker (e.g., a seconduser who is currently speaking) may be distinguished from the otherdisplay regions in any suitable manner. As an example and not by way oflimitation, a small-overlay-window associated with a dominant speakermay be temporarily enlarged, may be highlighted with a particular color,or may otherwise be visually made distinguishable from other displayregions being displayed.

In particular embodiments, a communication system 803 may determine anoccurrence of a trigger event indicating availability of a callee-userfor a call session with a caller-user. The communication system 803 maybe the social-networking system 160 or may be associated with thesocial-networking system 160. Alternatively, the communication system803 may be a system that is separate from the social-networking system160. In this case, the communication system 803 may receive informationfrom the social-networking system 160 (e.g., social graph information),which it may use as described below (e.g., in determining the occurrenceof a trigger event). The communication system 803 may interface with oneor more client systems 130 (e.g., the client system 130 of the firstuser and the client system 130 of the second user) to facilitate thecommunications described herein, As an example and not by way oflimitation, this interface may be facilitated by the communicationsapplication described herein. In particular embodiments, thecommunication system 803 may send a notification to a client system 130of the caller-user indicating an availability of the callee-user toparticipate in the call session. The notification may only be sent ifthere is a threshold level of certainty that the callee-user isavailable, which may include consideration of one or more negative orpositive conditions. The communication system 803 may receive a requestfrom the client system 130 of the caller-user to initiate the callsession. The communication system 803 may establish the call session toenable a media stream comprising media captured at the client system 130of the caller-user to be received at the client system 130 of thecallee-user. The communication system 803 may send the media captured atthe client system 130 of the caller-user to the client system 130 of thecallee-user. A goal of the disclosed method is to encourage the use ofmedia communications, particularly with the use of call sessions. Oneway it does so is by making the experience of setting up a sessionsmoother and more instantaneous. Almost immediately after a caller-userrequests a call session, the callee-user is presented with media fromthe caller-user. With minimal effort, the callee-user may choose to sendback media. The result is a disruption of the traditional, cumbersomemodel of requesting a call, waiting for the call to be accepted, andfinally sending media once the call is accepted. Another way thedisclosed method may encourage the use of media communications is bypromoting the call session functionality to a caller-user at the righttime (e.g., when the callee-user is available or interested in a callsession), thereby increasing the chance that a request for a callsession will be received favorably and likely resulting in a positivecall session experience. Over time, having such positive experienceswith call sessions may encourage users to make more use of callsessions. Promoting the call session functionality at the right timealso serves to reinforce the smoothness and instantaneousness of theexperience, because it ensures that the caller-user is rarely refused orleft waiting (e.g., a user who is available will be much more likely torespond quickly). The caller-user experiences a much quicker connectionwith the callee-user, without much uncertainty about whether the otheruser will refuse the call.

As used herein, the term “caller-user” refers to a user (e.g., of thesocial-networking system 160 and/or the communication system 803, of acommunications application used to facilitate a respective call session)who requests or potentially may request a call session with at least oneother user. As used herein, the term “callee-user” refers to a user whoreceives or potentially may receive the request to join a call sessionwith at least the caller-user. Although this disclosure focuses on callsessions between two client systems 130, one of a caller-user and one ofa callee-user, any number of client systems 130 may be involved in thecall session. As an example and not by way of limitation, a clientsystem 130 of a caller-user may initiate a call session with two clientsystems 130 of two callee-users.

In particular embodiments, the communication system 803 may determine anoccurrence of a trigger event indicating availability of a callee-userfor a call session with a caller-user. Availability of a callee-user maysuggest that the callee-user is likely to be available for or interestedin a call session generally, or in a call session with the particularcaller-user. Availability information may also be specific to a type ofcall session (e.g., the media type that is to be sent and/or receivedduring the call session). As an example and not by way of limitation, acallee-user may be available for a call session that includes video, butmay not be available for a call session that also includes audio. Inparticular embodiments, availability may be quantified in what may bereferred to as an availability-score. A higher availability-score for acallee-user generally may indicate a higher likelihood that thecallee-user is available or interested. A trigger event may be an eventor status that functions as an indicator of availability. In particularembodiments, a trigger event may include an occurrence of a state wherethe caller-user and the callee-user are on a shared chat thread of amessaging application (e.g., a messaging application that may facilitatethe call session). The trigger event may occur when either or both ofthe users send one or more messages to each other on the chat thread.This may be an indicator that the callee-user is available or interestedin talking to the caller-user (e.g., the very fact that the callee-useris taking the time to chat with the caller-user suggests that thecallee-user has the time or interest to converse with the caller-user).In particular embodiments, the trigger event may include an occurrencewhere the callee-user has opened up an interface that may be used tosend a message to the caller-user. This may be an indicator that thecallee-user is at least thinking about communicating with thecaller-user. In particular embodiments, the trigger event may include anoccurrence where the callee-user is on a page or interface associatedwith the caller-user. As an example and not by way of limitation, thecallee-user may have been on a profile page of the caller-user (e.g., onthe online social network, on a third-party website). As another exampleand not by way of limitation, the callee-user may have been looking at aphotograph of the caller-user (e.g., on the online social network, on athird-party website). In particular embodiments, a trigger event mayinclude an occurrence where the callee-user has acted in mannerindicating a threshold amount of interest in the callee-user. As anexample and not by way of limitation, a trigger event may have occurredif the callee-user has been browsing a page or interface associated withthe caller-user for a threshold amount of time. As another example andnot by way of limitation, a trigger event may have occurred if thecallee-user has performed a threshold number of actions associated withthe caller-user (e.g., having viewed a threshold number of pictureswithin a period of time, having liked a threshold number of posts withina period of time). Although this disclosure describes determining aparticular occurrence indicating a particular state of a particular userin a particular manner, this disclosure contemplates determining anysuitable occurrence indicating any suitable state of any suitable userin any suitable manner.

In particular embodiments, the communication system 803 may send anotification to a client system 130 of the caller-user indicating anavailability of the callee-user to participate in the call session. Anotification may be any suitable visual, auditory, or other cue that mayindicate to the caller-user that the callee-user is available. FIG. 6Aillustrates a notification on a display of a caller-user's client system130 indicating an availability of a callee-user. In particularembodiments, the communication system 803 may determine whether or notto send the notification. The notification may be sent in response tothe occurrence of a trigger event. As an example and not by way oflimitation, referencing FIG. 6A, the caller-user and the callee-user mayhave been communicating to each other on a shared chat thread of amessaging application. In this example, the messaging application maynotify the caller-user by animating the video-call interactive element610, animating an audio-call icon, sending the textual notification 620,and/or any other suitable notification. In particular embodiments, thenotifications may be displayed outside the confines of an interfacelimited to a particular user or a particular group of users. FIG. 7illustrates notifications being displayed indicating the availability ofthree callee-users. As an example and not by way of limitation,referencing FIG. 7, a notification 720 may be displayed next to arepresentation of the callee-user 710 (e.g., a user named “Ike”),indicating to the caller-user that the callee-user is available. In thisexample, the notification may be an animation, or may simply be animage. The notification may only be sent to the client system 130 of thecaller-user if the availability-score associated with the callee-userexceeds a threshold value, which may be an indication that there is athreshold level of certainty that the callee-user is available. Althoughthis disclosure describes sending a particular notification to aparticular user in a particular manner, this disclosure contemplatessending any suitable notification to any suitable user in any suitablemanner.

In particular embodiments, the communication system 803 may calculatethe availability-score of a callee-user based on the occurrence of oneor more trigger events and further based on the occurrence of one ormore negative conditions. The occurrence of a negative condition mayserve to counteract the occurrence of a trigger event, in that anegative condition may be an indication that a user is not available orinterested in a particular call session. The occurrence of a negativecondition may decrease the availability-score of a callee-user. Thecommunication system 803 may access information (e.g., social graphinformation from its own data stores 164, received from thesocial-networking system 160 if the communication system 803 is aseparate system, received from the client system 130 of the callee-user,received from a third-party system) corresponding to an occurrence of anegative condition. In particular embodiments, information correspondingto an occurrence of a negative condition may include geo-locationinformation associated with the client system 130 of the callee-user.The geo-location information may correspond to a geo-location that mayin some way be unsuitable or undesirable for a call session. Inparticular embodiments, information corresponding to an occurrence of anegative condition may include information about a schedule of thecallee-user, which may be determined in any suitable manner. As anexample and not by way of limitation, the communication system 803 mayreceive information from a calendar application on the client system 130of the callee-user, within which the callee-user may have scheduled atime particular time-slot for a business meeting. In this example, ifthe current time is within the particular time-slot, the communicationsystem 803 may determine that the negative condition occurred. Asanother example and not by way of limitation, the callee-user may haveuploaded a calendar of events to the communication system 803 or thesocial-networking system 160, and this calendar of events may beaccessed for the same purpose as the previous example. As anotherexample and not by way of limitation, the callee-user may have acceptedan invitation to a study-group event, scheduled for a particulartime-slot, through the online social network. In this example, thecommunication system 803 may interpret this information about thecallee-user as a negative condition during the particular time-slot(e.g., because a callee-user may be less interested in a call sessionwhile at a study group).

In particular embodiments, information corresponding to an occurrence ofa negative condition may include information about a relationshipbetween the callee-user and the caller-user. As an example and not byway of limitation, if a callee-user who has indicated an aversion to aparticular caller-user in the past, the communication system 803 mayinterpret that as a negative condition. In particular embodiments,information corresponding to an occurrence of a negative condition mayinclude information about a level of interaction between the callee-userand the caller-user. As an example and not by way of limitation, if acallee-user is a person who has limited interaction with the caller-user(e.g., on the online social network), that may ordinarily be a negativecondition, because it is conceivable that the callee-user may not beinterested in the caller-user. On the other hand, it may not be anegative condition in some cases, because a video-call session between acallee-user may find a caller-user interesting specifically because ofthe fact that they have not interacted frequently (e.g., because theymay have more to converse about). In particular embodiments, informationcorresponding to an occurrence of a negative condition may includeinformation about the degree of separation between the callee-user andthe caller-user on the online social network. As an example and not byway of limitation, the communication system 803 may access the socialgraph (e.g., through the social-networking system 160 if it is aseparate system, directly if it is the same system) to determine howmany degrees of separation there are between a node representing thecallee-user and a node representing the caller-user. In this example, ifthere is more than a maximum degree of separation (e.g., more than one),the communication system 803 may interpret that as a negative condition.

In particular embodiments, information corresponding to an occurrence ofa negative condition may include a user preference of the callee-userindicating that the callee-user is not interested in a call session witha caller-user. The user preference may be derived based on informationabout the callee-user, which may be included in social-networkinginformation associated with the callee-user. This information mayinclude demographics, memberships in particular groups (e.g., on theonline social network), hobbies of the user, or any other suitableinformation. As an example and not by way of limitation, if thecallee-user is a seventeen-year-old user, that may be a negativecondition for a caller-user who is nine (e.g., because a teenager maynot be interested in speaking to a nine-year-old). As another exampleand not by way of limitation, the callee-user may have expressed (eitherexplicitly or implicitly through a history of the callee-user'sbehaviors) a preference to not accept call sessions from family members,a member of a particular political party, or any other suitable group.As another example and not by way of limitation, the callee-user mayhave indicated a severe hearing problem, such that a negative conditionmay be found (e.g., because a call session may not be preferred by thecallee-user due to the hearing problem). The user preference may also bederived based on concepts or users to which the callee-user isassociated, as determined by whether their respective nodes areconnected, directly or indirectly, on the social graph. A callee-usermay be associated with a concept or user if the callee-user interactswith the concepts or users (e.g., liking a concept or user, postingabout the concept or user, commenting on posts associated with theconcept or user, being a member of a group related to the concept oruser). As an example and not by way of limitation, a callee-user may bedetermined to have a dislike for cat owners based on the callee-userbeing a member of a group that has a stated purpose of eliminating catvideos from the internet. In this example, for a caller-user who is acat owner (as may be determined by, for example, the user's profileinformation, the user's photos that may have tagged one or more cats),the communication system 803 may determine that there is a negativecondition. User-preference information may be included as part ofsocial-networking information (e.g., on the social graph) associatedwith the callee-user. In particular embodiments, there may be a negativecondition if the callee-user is determined to have a mood or sentiment(e.g., as described above, based on user inputs and interactions)indicating that the callee-user may not be interested in a call sessiongenerally, or a call session with the caller-user. As an example and notby way of limitation, a callee-user may be viewing articles that suggestthe user is stressed, which may indicate that the callee-user is notinterested in a call session. In particular embodiments, informationcorresponding to an occurrence of a negative condition may includeinformation about a history of behavior of the callee-user. As anexample and not by way of limitation, if a callee-user typically deniescall sessions between 8 a.m. and 5 p.m., the communication system 803may interpret this information as causing a negative condition to occurbetween those hours. The relationship between the callee-user and thecaller-user may be analyzed alongside the history of behavior todetermine if a negative condition has occurred. As an example and not byway of limitation, if the callee-user from the previous example has ahistory of accepting call sessions from coworkers between 8 a.m. and 5p.m., there may not be a negative condition for a coworker-caller-userbetween those hours but there may be a negative condition for anon-coworker.

In particular embodiments, the information corresponding to anoccurrence of a negative condition may include information specifying adetermination that the caller-user cannot initiate a call session withthe callee-user, or that the caller-user is among a group of users whodo not have permission to initiate a call session with the callee-user.The determination may be dependent on preferences configured by thecallee-user, preferences configured by the caller-user, attributes ofthe call session, device status for the client system 130 of thecallee-user, and device status for the client system 130 of thecaller-user. Attributes of the call session may include the time of day,current network bandwidth ability for the callee-user and/or thecaller-user, or any other suitable attribute of the call session. Thedevice status may include the battery level of the client systems 130 ofthe callee-user and/or the caller-user (e.g., if thecallee-user/caller-user has a low battery level, that may be a negativecondition), available memory or processor ability on the client systems130 of the callee-user and/or the caller-user (e.g., if thecallee-user/caller-user is playing a memory- or processor-intensivevideo game such that a call session would be disruptive to thecallee-user, that may be a negative condition), audio/video capabilitiesof the client systems 130 of the callee-user and/or the caller-user(e.g., if the caller-user/caller-user does not have the requisitesoftware or hardware to support audio/video, that may be a negativecondition). In particular embodiments, there may be a negative conditionif the callee-user and/or the caller-user do not have the most updatedsoftware to enable a call session, or do not have compatible software toenable the call session. As an example and not by way of limitation, ifthe users have different versions of a communications application beingused to establish a call session, that may be a negative condition. Asanother example and not by way of limitation, if the users do not havecompatible codecs, that may be negative condition. In particularembodiments, there may be a negative condition if the callee-user hasalready established a different call session, such that the call may beongoing. In such a case, the callee-user may not be available foranother call session, at least for the duration of the established callsession. In particular embodiments, there may be a negative condition ifa privacy setting of the callee-user specifies that the callee-user doesnot permit call sessions initiated by other users.

Although this disclosure focuses on negative conditions that indicate alack of interest or availability of the callee-user, the disclosurecontemplates positive conditions that indicate interest or availabilityof the callee-user. A positive condition may simply be the converse of anegative condition. As an example and not by way of limitation, theoccurrence of a positive condition may be a user preference indicatingthat the callee-user is interested in a call session with a caller-user,rather than a user preference indicating that the callee-user is notinterested in a call session with a caller-user. As another example andnot by way of limitation, a positive condition may be a mood orsentiment of the callee-user indicating that the callee-user may beinterested in a call session generally, or a call session with thecaller-user (e.g., the callee-user may be in a depressed mood, such thata call session may be of cheer to the callee-user.

In particular embodiments, the occurrences of trigger events, negativeconditions, and positive conditions may be weighted in a suitable mannerto determine the availability-score for a particular caller-user. As anexample and not by way of limitation, a negative condition from apattern of behavior may be weighted less than a negative condition froma relationship. As another example and not by way of limitation,negative conditions may be weighted higher than positive conditions. Inparticular embodiments, a negative condition may be weighted so highlythat the availability-score of a particular callee-user may never exceedthe threshold value, such that the communication system 803 may not senda notification indicating the availability of the particular callee-userno matter what the other events or conditions are. As an example and notby way of limitation, if a callee-user's privacy settings specify thatno users may contact the callee-user, the communication system 803 mayweight that negative condition so heavily that no trigger event and nonumber of positive conditions may be sufficient to produce anavailability-score exceeding the threshold value. As an example and notby way of limitation the calculation of the availability-score may berepresented by the following example equation:

-   availability-score=∝(At₁+Bt₂)+Cp₁+Dp₂−En₁−Fn₂, where t₁ and t₂    represent trigger events, p₁ and p₂ represent positive conditions,    n₁ and n₂ represent negative conditions, and ∝, A, B, C, D, E, and F    represent respective weights. The values of the weights may be    pre-determined for each type of event or condition. Likewise, each    event or condition may have pre-determined values. In the example    equation, trigger events in general may be weighted higher or lower    than the other conditions (e.g., by accordingly weighting ∝).

In particular embodiments, the communication system 803 may receive arequest from the client system 130 of the caller-user to initiate thecall session. The request may be in response to an input from thecaller-user. The input may include a suitable touch gesture (e.g.,tapping on the video-call interactive element 610 on a touch-screen), asuitable mouse-click (e.g., positioning a cursor over the video-callinteractive element 610 and clicking on it), or any other suitablemethod of selection. Upon receiving the input, the client system 130 ofthe caller-user may send a request to the communication system 803 toinitiate the call session. Although this disclosure describes receivinga particular request from a particular user in a particular manner, thisdisclosure contemplates receiving any suitable request from any suitableuser in any suitable manner.

In particular embodiments, the communication system 803 may establishthe call session to enable a media stream from the client system 130 ofthe caller-user to be received at the client system 130 of thecallee-user. In particular embodiments, the media stream may includemedia captured at the client system 130 of the caller-user. As anexample and not by way of limitation, the client system 130 of thecaller-user may include a camera (or may be connected to or otherwiseassociated with a camera) that captures video which may be sent as avideo stream. Establishing a call session may involve a process ofnegotiation between the client system 130 of the callee-user and theclient system 130 of the caller-user. In particular embodiments, thenegotiation may be mediated by the communication system 803 (or anotherthird-party communication system). In particular embodiments, thenegotiation may begin with a setup-offer being sent by the client system130 of the caller-user to the communication system 803. The setup-offermay include caller-information, which may include information about theclient system 130 of the caller-user. As an example and not by way oflimitation, the caller-information may include information about thehardware (e.g., information about the microphone, camera, display,speakers) and software capabilities (e.g., the operating system, theversion of the software being used to initiate the call session) of thecaller-user's client system 130. The caller-information may also includeinformation about the codecs (e.g., audio/video codecs) that may be usedand that are installed on the caller-user's client system 130. Thecaller-information may also include information about the type of mediathat is to be sent and received by both client systems 130. As anexample and not by way of limitation, the caller-information may specifythat only video is being sent and may further specify that only videowill be received by the client system 130 of the caller-user (i.e., thatthe client system 130 of the callee-user should send back only video).The caller-information may also include a user-identifier of thecaller-user, the caller-user's name, profile picture, or any othersuitable identifying information. The setup-offer may be relayed by thecommunication system 803 to the client system 130 of the callee-user. Inresponse, the client system 130 of the callee-user may send back to thecommunication system 803 a setup-answer, which may includecallee-information, which may be the same type of information as thecaller-information, but specific to the callee-user and the clientsystem 130 of the callee-user. In particular embodiments, thesetup-answer may be sent automatically by the client system 130 of thecallee-user without any input by the callee-user. The communicationsystem 803 may relay the setup-answer to the client system 130 of thecaller-user. The call session may be established at the conclusion ofthe negotiation, which may involve one or more agreements being reachedby the client systems 130. As an example and not by way of limitation,the client system 130 of the callee-user and the client system 130 ofthe caller-user may agree upon a particular set of compatible codecsthat may be used (e.g., selected from a list of codecs that areinstalled on both client systems 130) for different media types. At thispoint, the client systems 130 may be enabled to send and/or receivemedia streams (e.g., video and/or audio streams) to each other. Inparticular embodiments, only the client system 130 of the caller-usermay be enabled to send a media stream at the conclusion of thisnegotiation. In particular embodiments, both client systems may beenabled to send media streams to each other. Although this disclosurefocuses on particular systems (e.g., the social-networking system 160,the communication system 803) mediating and establishing the callsession, the disclosure contemplates the use of any suitable system(e.g., another third-party system associated with a communicationsapplication used to facilitate the call). Similarly, although thisdisclosure focuses on establishing a call session to enable a mediastream to be received by a particular system in a particular manner, thedisclosure contemplates establishing a call session to enable anysuitable data to be received by any suitable system.

In particular embodiments, the communication system 803 may send themedia captured at the client system 130 of the caller-user to the clientsystem 130 of the callee-user. In particular embodiments, the media maybe sent immediately after the call session is established. The media maybe sent as a media stream that includes media of any type. As an exampleand not by way of limitation, the media stream may be a video streamincluding video from the client system 130 of the caller-user. FIG. 6Billustrates a display of a callee-user's client system 130 that includesa video stream from the caller-user. In particular embodiments, forvideo streams, the video of the video stream may be optimized to bedisplayed with a subregion of the display of the client system 130 ofthe caller-user, as described above. Also as described above, thesubregion may be of any suitable position, size, or shape. As an exampleand not by way of limitation, referencing FIG. 6B, a video stream fromthe caller-user (e.g., the user “Michael”) may be displayed within thesmall-overlay-window 630 on the display of the client system 130 of thecallee-user (e.g., the user “Prinda”). Alternatively, the video streammay be displayed as a full-screen display. The media stream may includemore than one type of media. As an example and not by way of limitation,the media stream may include both video and audio. The media stream maybe received at the client system 130 of the callee-user without causinginterruption to a current activity on the client system 130 of thecallee-user. As an example and not by way of limitation, the clientsystem 130 of the callee-user may receive an audio and/or video streamwhile the callee-user is reading an article on a news-readerapplication, and the callee-user may be able to continue reading thearticle while listening to and/or viewing the media stream. Inparticular embodiments, the media may be received without any input fromthe callee-user, such that the callee-user may almost instantaneously(allowing for a time delay in transmission) begin hearing or viewing themedia. In particular embodiments, the media stream may be in the form ofmedia-datagrams. The media-datagrams may have been encoded using one ormore of agreed-upon codecs corresponding to the media types of themedia-datagrams. As an example and not by way of limitation, the clientsystem 130 of the caller-user may encode video using an agreed-uponvideo codec and may send the resultant video-datagram. Themedia-datagrams may be sent through a separate channel (i.e., one thatis separate from a channel used to send the setup-offer andsetup-answer). As an example and not by way of limitation, the clientsystem 130 of the caller-user may send video-datagrams through a UserDatagram Protocol (UDP) channel originating from a media stack at theclient system 130 of the caller-user. Upon receiving themedia-datagrams, the client system 130 of the callee-user may interpretthe media-datagrams using one or more of the agreed-upon codecs todisplay a media stream. Although this disclosure describes sendingparticular media from a particular user to a particular user in aparticular manner, this disclosure contemplates sending any suitablemedia stream from any suitable user to any suitable user in any suitablemanner

In particular embodiments, the client system 130 of the callee-user maysend a media stream (e.g., including media captured at the client system130 of the callee-user) to the communication system 803 (or the systemthat is mediating the call session) to relay to the client system 130 ofthe caller-user. The media stream sent by the client system 130 of thecallee-user may be of the same type as the media stream received fromthe client system 130 of the caller-user. As an example and not by wayof limitation, if the client system 130 of the callee-user had receiveda media stream including video and audio, it may send back a mediastream including video and audio. In particular embodiments, the clientsystem 130 of the callee-user may send the media stream automaticallywithout further input from the callee-user. In particular embodiments,the client system 130 of the callee-user may only send the media streamin response to a reply-input from the callee-user requesting that themedia stream be sent. As an example and not by way of limitation,referencing FIG. 6B, the callee-user may perform a gesture (e.g., atapping gesture, a swipe gesture, a click) over the small-overlay-window630 or the interactive element 640. This gesture may be interpreted asreply-input requesting that a suitable media stream be sent. Inparticular embodiments, the callee-user may be able to select amongdifferent reply-inputs to specify a media type to send (e.g., audioonly, video only, audio and video). Alternatively, the reply-input maybe set to always reciprocate what was received from the client system130 of the callee-user, or at least default to that option. Inparticular embodiments, following the reply-input specifying a mediatype, the client system 130 of the callee-user may send a request to thecaller-user to accept the specified media type and/or to send back thesame media type. The caller-user may enter a suitable input, which maycause the client system 130 of the caller-user to send back a response,accepting or refusing the request. If the response is an acceptance, thecall session may be re-established with media streams of the specifiedmedia type. If the response is refusal, the callee-user may be presentedwith a notification about the refusal, and the callee-user may take anysuitable action (e.g., proceed with the call session as is, terminatethe call session). FIG. 6C illustrates a display of a callee-user'sclient system 130 following a reply-input from the callee-userrequesting that media be sent to the caller-user. In particularembodiments, information associated with the media stream that is beingsent from the client system 130 of the callee-user may be displayed onthe client system 130 of the callee-user (e.g., as a reference for thecallee-user). As an example and not by way of limitation, referencingFIG. 6C, the client system 130 of the callee-user may be sending a videostream and may display the video stream that is being sent in thesmall-overlay window 650. As another example and not by way oflimitation, a client system 130 of the callee-user that is sending anaudio stream may display a transcription of the audio, a visualrepresentation of the respective audio waves, or any other suitableinformation. In particular embodiments, the callee-user may decide toterminate a media stream or to temporarily suspend the media stream andmay submit a user input to that effect. As an example and not by way oflimitation, referencing FIG. 6B, the callee-user may perform adownward-swipe gesture to hide the video stream being displayed in thesmall-overlay-window 630. In particular embodiments, the communicationsapplication that is being used for establishing the call session mayprovide one or more notifications that may inform the callee-user aboutan incoming media stream and provide instructions for interacting withthe incoming media stream. As an example and not by way of limitation,referencing FIG. 6B, the communications application may provide atextual notification (e.g., “Michael is sharing live video. Tap to sharevideo back. Swipe down to hide.”). In particular embodiments, before amedia stream is sent from the client system 130 of the callee-user, theclient system 130 of the callee-user and the client system 130 of thecaller-user may engage in a re-negotiation process. The re-negotiationprocess may be similar to the original negotiation process. The clientsystem 130 of the callee-user may send an update-offer to thecommunication system 803 (or another system that is facilitating thecall session), which may relay the update-offer to the client system 130of the caller-user. The update-offer may include the same type ofinformation as the setup-answer (e.g., including callee-information). Inparticular embodiments, the update-offer may only be an update ofinformation that may have changed since the setup-answer. As an exampleand not by way of limitation, the setup-answer may have specified thatno media stream was to be sent from the client system 130 of thecallee-user. In this example, the update-offer may now specify that avideo stream is to be sent (e.g., in response to a user input requestingthat a video stream be sent), without re-sending othercallee-information (e.g., the callee-user's name) that may have alreadybeen sent in the setup-answer. Upon receiving the update-offer, theclient system 130 of the callee-user may send back an update-answer,with any updated caller-information. At the conclusion of there-negotiation process, the call session may be said to bere-established, such that media datagrams may be sent by the clientsystem 130 of the callee-user on a separate channel, as described above.In particular embodiments, re-establishing a call session may notterminate an existing call session. Rather, re-establishing a callsession may merely update the call session based on the terms of there-negotiation. In particular embodiments, the entire process ofnegotiating, renegotiating, and establishing a video chat session may,in part, make use of the Session Description Protocol (SDP).

FIG. 8 illustrates an example method 800 for negotiating, establishing,and launching a particular type of call session with audio and videostreams. The method may begin at step 810, where the client system 130of the caller-user 802 may send a setup-offer (which may includecaller-information, as described above) to the communication system 803,beginning the negotiation. At step 815, the communication system 803 mayrelay the setup-offer to the client system 130 of the callee-user 804.At step 820, the client system 130 of the callee-user 804 may respondwith a setup-answer (which may include callee-information, as describedabove), which may be sent to the communication system 803. At step 825,the communication system 803 may relay the response to the client system130 of the caller-user 802. At the conclusion of step 825, the callsession may be said to be established. At step 830, the client system130 of the caller-user 802 may send video (e.g., video datagrams) to thecommunication system 803. At step 835, the communication system 803 mayrelay the video from the client system 130 of the caller-user 802 to theclient system 130 of the callee-user 804. At this point, there may beunidirectional video, from the caller-user to the callee-user. Thoughnot shown in the figure, a re-negotiation and re-establishment may occurat this point. At step 840, the client system 130 of the callee-user 804may send video and audio to the communication system 803 (e.g., inresponse to a user input by the callee-user). At step 845, thecommunication system 803 may relay the video and audio from the clientsystem 130 of the callee-user 804 to the client system 130 of thecaller-user 802. Though not shown in the figure, a re-negotiation andre-establishment may occur at this point. At step 850, the client system130 of the caller-user 802 may send video and audio to the communicationsystem 803. At step 855, the communication system 803 may relay thevideo and audio to the client system 130 of the callee-user 804. At thispoint, there may be bidirectional video between the caller-user and thecallee-user.

In particular embodiments, an established call session may be a“silent-video” call session. A silent-video call session may be a callsession where there is no audio being sent by either the client system130 of the caller-user or the client system 130 of the callee-user. Asan example and not by way of limitation, both client systems 130 maysend only video streams to each other. Such a call may be advantageousin cases where a user cannot hear audio (e.g., in a crowded bus where itis too noisy) or is in a setting where audio is not appropriate (e.g.,in a library, in a room full of strangers). FIG. 9A illustrates adisplay of the client system 130 of the caller-user that includes aprompt for initiating a silent-video call session. In the exampleillustrated by FIG. 9A, the caller-user (e.g., the user “Michael”) maytap the interactive element 910 to send a video stream with no audio.FIG. 9B illustrates a display of the client system 130 of thecallee-user receiving unidirectional silent video. In the exampleillustrated by FIG. 9B, the callee-user may immediately be able to viewthe video stream from the client system 130 of the caller-user, in whatmay be referred to as a unidirectional call session. In this example,the callee-user may be presented with the options of sending back silentvideo (e.g., by activating the interactive element 920) or additionallyrequesting audio (e.g., by activating the interactive element 930). Thecallee-user may also have the option of hiding the video stream orterminating the call session entirely using any suitable methoddescribed above (e.g., performing a downward-swipe gesture). FIG. 9Cillustrates a display of the client system 130 of the callee-user duringa bidirectional silent-video call session. In this example, thecallee-user may have opted to send back silent video. FIG. 9Dillustrates a display of the client system 130 of the callee-user with arequest to accept audio from the client system 130 of the caller-user.In this example, the caller-user may have submitted an input tore-establish the call session, such that the client system 130 of thecaller-user may send both video and audio (thereby causing it to nolonger be silent video). The callee-user may be presented with theoption of accepting or denying the audio. The callee-user may submit asuitable input to make the desired selection. As an example and not byway of limitation, the callee-user may tap on the small-overlay-window940 or may tap on the textual notification prompt. In particularembodiments, the callee-user may also have the option of sending backaudio to the caller-user. In particular embodiments, the client system130 of the callee-user may automatically send back audio if thecallee-user accepts the audio from the caller-user.

FIGS. 10A-10D illustrate additional example displays of the clientsystem 130 of the callee-user at different stages of establishing abidirectional video-call session. Referencing FIG. 10A, the callee-userand the caller-user (e.g., a user named “Brendan”) may both be viewing acommon chat thread within a chat application. The client system 130 ofthe callee-user may display one or more suitable indications that thisis the case. As an example and not by way of limitation, referencingFIG. 10A, a text notification with the text “Viewing this conversation”may be displayed, indicating that the caller-user is viewing the samechat thread (or “conversation”). As another example and not by way oflimitation, referencing FIG. 10A, the interactive element 1010 may beanimated (e.g., with a ripple animation emanating from the interactiveelement 1010) to draw the callee-user's attention or otherwise indicatethat the caller-user is viewing the conversation. Referencing FIG. 10B,the caller-user may have begun sharing a video stream with thecallee-user, and the client system 130 of the callee-user may displaythis video stream without any action or input from the callee-user.Again referencing FIG. 10B, in order to receive an audio stream, thecallee-user may select the interactive element 1020. Referencing FIG.10C, the callee-user may have elected to share back a media stream withthe caller-user. At this point, there is at least a bi-directional videostream. There may also be a uni-directional or bi-directional audiostream (depending on user selections or preferences). FIG. 10C alsoillustrates interactive elements that may be selected by the callee-userto modify the call session or the user interface. For example,referencing FIG. 10C, the callee-user may select the interactive element1030 to resize (e.g., “expand”) the small-overlay-window (and/or thefirst-user-small-overlay-window) displaying the video stream from thecaller-user. As another example, referencing FIG. 10C, there may beinteractive elements for enabling or disabling audio or video, selectinga front- or back-facing camera, or ending the call session. ReferencingFIG. 10D, the call session may have continued for a threshold amount oftime without user input from the callee-user, and may have consequentlycaused the interactive elements to no longer be visible. The interactiveelements may become visible again if the callee-user taps on orotherwise submits an input to the client system 130 of the callee-user.

FIGS. 11A-11B illustrate additional example displays of the clientsystem 130 of the caller-user at different stages of establishing abidirectional video-call session. Referencing FIG. 11A, the callee-user(e.g., in this set of figures, a user named “Brendan”) and thecaller-user may both be viewing a common chat thread within a chatapplication. The client system 130 of the caller-user may display a textnotification and/or an animation indicating that the callee-user isviewing the same chat thread (as explained above in the context of theclient system 130 of the callee-user). To the caller-user this may be anindication that the callee-user is available for a call session.Referencing FIG. 11B, the caller-user may have begun sharing a mediastream with the callee-user (e.g., the video stream displayed in thesmall-overlay-window). The client system 130 of the caller-user maydisplay a notification that the callee-user is receiving or viewing thevideo stream (e.g., the text notification 1110). Referencing FIG. 11C,the callee-user may have elected to share back a media stream, and thevideo of the media stream may be displayed in the small-overlay-windowdisplayed in FIG. 11C.

FIG. 12 illustrates an example method 1200 for displaying a video streamfor a video-call session in a small-overlay-window. The method may beginat step 1210, where a client system 130 may launch a video-call sessionto enable a video stream for display in a small-overlay-window on adisplay of the client system 130 of the first user. At step 1220, theclient system 130 of the first user may receive a video streamcomprising video captured at a client system 130 of a second user. Atstep 1230, the client system 130 of the first user may display the videostream in the small-overlay-window, wherein the small-overlay-window ispositioned over an active application running on the client system 130of the first user. Particular embodiments may repeat one or more stepsof the method of FIG. 12, where appropriate. Although this disclosuredescribes and illustrates particular steps of the method of FIG. 12 asoccurring in a particular order, this disclosure contemplates anysuitable steps of the method of FIG. 12 occurring in any suitable order.Moreover, although this disclosure describes and illustrates an examplemethod for displaying a video stream for a video-call session in asmall-overlay-window including the particular steps of the method ofFIG. 12, this disclosure contemplates any suitable method for displayinga video stream for a video-call session in a small-overlay-windowincluding any suitable steps, which may include all, some, or none ofthe steps of the method of FIG. 12, where appropriate. Furthermore,although this disclosure describes and illustrates particularcomponents, devices, or systems carrying out particular steps of themethod of FIG. 12, this disclosure contemplates any suitable combinationof any suitable components, devices, or systems carrying out anysuitable steps of the method of FIG. 12.

FIG. 13 illustrates an example method 1300 for notifying a caller-userof an availability of a callee-user and establishing a call sessionrequested by the caller-user. The method may begin at step 1310, wherethe communication system 803 (e.g., the social-networking system 160)may determine an occurrence of a trigger event. At step 1320, thecommunication system 803 may send a notification to a client system 130of the caller-user. At step 1330, the communication system 803 mayreceive a request from the client system 130 of the caller-user toinitiate the call session. At step 1340, the communication system 803may establish the call session to enable a media stream comprising mediacaptured at the client system 130 of the caller-user and received at theclient system 130 of the callee-user. At step 1350, the communicationsystem 803 may send the media captured at the client system 130 of thecaller-user to the client system 130 of the callee-user. Particularembodiments may repeat one or more steps of the method of FIG. 13, whereappropriate. Although this disclosure describes and illustratesparticular steps of the method of FIG. 13 as occurring in a particularorder, this disclosure contemplates any suitable steps of the method ofFIG. 13 occurring in any suitable order. Moreover, although thisdisclosure describes and illustrates an example method for notifying acaller-user of an availability of a callee-user and establishing a callsession requested by the caller-user including the particular steps ofthe method of FIG. 13, this disclosure contemplates any suitable methodfor notifying a caller-user of an availability of a callee-user andestablishing a call session requested by the caller-user including anysuitable steps, which may include all, some, or none of the steps of themethod of FIG. 13, where appropriate. Furthermore, although thisdisclosure describes and illustrates particular components, devices, orsystems carrying out particular steps of the method of FIG. 13, thisdisclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 13.

FIG. 14 illustrates an example computer system 1400. In particularembodiments, one or more computer systems 1400 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 1400 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 1400 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 1400.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems1400. This disclosure contemplates computer system 1400 taking anysuitable physical form. As example and not by way of limitation,computer system 1400 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, a tabletcomputer system, an augmented/virtual reality device, or a combinationof two or more of these. Where appropriate, computer system 1400 mayinclude one or more computer systems 1400; be unitary or distributed;span multiple locations; span multiple machines; span multiple datacenters; or reside in a cloud, which may include one or more cloudcomponents in one or more networks. Where appropriate, one or morecomputer systems 1400 may perform without substantial spatial ortemporal limitation one or more steps of one or more methods describedor illustrated herein. As an example and not by way of limitation, oneor more computer systems 1400 may perform in real time or in batch modeone or more steps of one or more methods described or illustratedherein. One or more computer systems 1400 may perform at different timesor at different locations one or more steps of one or more methodsdescribed or illustrated herein, where appropriate.

In particular embodiments, computer system 1400 includes a processor1402, memory 1404, storage 1406, an input/output (I/O) interface 1408, acommunication interface 1410, and a bus 1412. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 1402 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor 1402 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 1404, or storage 1406; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 1404, or storage 1406. In particularembodiments, processor 1402 may include one or more internal caches fordata, instructions, or addresses. This disclosure contemplates processor1402 including any suitable number of any suitable internal caches,where appropriate. As an example and not by way of limitation, processor1402 may include one or more instruction caches, one or more datacaches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1404 or storage 1406, and the instruction caches may speed upretrieval of those instructions by processor 1402. Data in the datacaches may be copies of data in memory 1404 or storage 1406 forinstructions executing at processor 1402 to operate on; the results ofprevious instructions executed at processor 1402 for access bysubsequent instructions executing at processor 1402 or for writing tomemory 1404 or storage 1406; or other suitable data. The data caches mayspeed up read or write operations by processor 1402. The TLBs may speedup virtual-address translation for processor 1402. In particularembodiments, processor 1402 may include one or more internal registersfor data, instructions, or addresses. This disclosure contemplatesprocessor 1402 including any suitable number of any suitable internalregisters, where appropriate. Where appropriate, processor 1402 mayinclude one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 1402. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 1404 includes main memory for storinginstructions for processor 1402 to execute or data for processor 1402 tooperate on. As an example and not by way of limitation, computer system1400 may load instructions from storage 1406 or another source (such as,for example, another computer system 1400) to memory 1404. Processor1402 may then load the instructions from memory 1404 to an internalregister or internal cache. To execute the instructions, processor 1402may retrieve the instructions from the internal register or internalcache and decode them. During or after execution of the instructions,processor 1402 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor1402 may then write one or more of those results to memory 1404. Inparticular embodiments, processor 1402 executes only instructions in oneor more internal registers or internal caches or in memory 1404 (asopposed to storage 1406 or elsewhere) and operates only on data in oneor more internal registers or internal caches or in memory 1404 (asopposed to storage 1406 or elsewhere). One or more memory buses (whichmay each include an address bus and a data bus) may couple processor1402 to memory 1404. Bus 1412 may include one or more memory buses, asdescribed below. In particular embodiments, one or more memorymanagement units (MMUs) reside between processor 1402 and memory 1404and facilitate accesses to memory 1404 requested by processor 1402. Inparticular embodiments, memory 1404 includes random access memory (RAM).This RAM may be volatile memory. Where appropriate, this RAM may bedynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate,this RAM may be single-ported or multi-ported RAM. This disclosurecontemplates any suitable RAM. Memory 1404 may include one or morememories 1404, where appropriate. Although this disclosure describes andillustrates particular memory, this disclosure contemplates any suitablememory.

In particular embodiments, storage 1406 includes mass storage for dataor instructions. As an example and not by way of limitation, storage1406 may include a hard disk drive (HDD), a floppy disk drive, flashmemory, an optical disc, a magneto-optical disc, magnetic tape, or aUniversal Serial Bus (USB) drive or a combination of two or more ofthese. Storage 1406 may include removable or non-removable (or fixed)media, where appropriate. Storage 1406 may be internal or external tocomputer system 1400, where appropriate. In particular embodiments,storage 1406 is non-volatile, solid-state memory. In particularembodiments, storage 1406 includes read-only memory (ROM). Whereappropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 1406taking any suitable physical form. Storage 1406 may include one or morestorage control units facilitating communication between processor 1402and storage 1406, where appropriate. Where appropriate, storage 1406 mayinclude one or more storages 1406. Although this disclosure describesand illustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 1408 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 1400 and one or more I/O devices. Computersystem 1400 may include one or more of these I/O devices, whereappropriate. One or more of these I/O devices may enable communicationbetween a person and computer system 1400. As an example and not by wayof limitation, an I/O device may include a keyboard, keypad, microphone,monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet,touch screen, trackball, video camera, another suitable I/O device or acombination of two or more of these. An I/O device may include one ormore sensors. This disclosure contemplates any suitable I/O devices andany suitable I/O interfaces 1408 for them. Where appropriate, I/Ointerface 1408 may include one or more device or software driversenabling processor 1402 to drive one or more of these I/O devices. I/Ointerface 1408 may include one or more I/O interfaces 1408, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication interface 1410 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 1400 and one or more other computer systems 1400 or oneor more networks. As an example and not by way of limitation,communication interface 1410 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI network. Thisdisclosure contemplates any suitable network and any suitablecommunication interface 1410 for it. As an example and not by way oflimitation, computer system 1400 may communicate with an ad hoc network,a personal area network (PAN), a local area network (LAN), a wide areanetwork (WAN), a metropolitan area network (MAN), or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As an example, computer system 1400 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination of two or more ofthese. Computer system 1400 may include any suitable communicationinterface 1410 for any of these networks, where appropriate.Communication interface 1410 may include one or more communicationinterfaces 1410, where appropriate. Although this disclosure describesand illustrates a particular communication interface, this disclosurecontemplates any suitable communication interface.

In particular embodiments, bus 1412 includes hardware, software, or bothcoupling components of computer system 1400 to each other. As an exampleand not by way of limitation, bus 1412 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 1412may include one or more buses 1412, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

What is claimed is:
 1. A method comprising: determining, by a computerserver machine, that a callee-user is available for a communicationsession based on location information associated with a client system ofthe callee-user; sending, by the computer server machine, in response todetermining that the callee-user is available, a notification to aclient system of a caller-user indicating that the callee-user isavailable; receiving, by the computer server machine, a request from theclient system of the caller-user to initiate the communication session;establishing, by the computer server machine, the communication sessionto enable a media stream comprising media captured at the client systemof the caller-user to be received at the client system of a callee-user;and sending, by the computer server machine, the media captured at theclient system of the caller-user to the client system of thecallee-user.
 2. The method of claim 1, wherein determining that thecallee-user is available for the communication session comprises:determining that the location information associated with the clientsystem of the callee-user corresponds to a location that is suitable forthe communication session.
 3. The method of claim 1, wherein thecaptured media has a media type comprising video only, audio only, orboth video and audio.
 4. The method of claim 1, wherein the establishingthe communication session comprises: receiving a setup-offer from theclient system of the caller-user, wherein the setup-offer comprisesinformation corresponding to one or more capabilities of the clientsystem of the caller-user; and receiving a setup-answer from the clientsystem of the callee-user, wherein the setup-answer comprisesinformation corresponding to one or more capabilities of the clientsystem of the callee-user.
 5. The method of claim 4, wherein thecapabilities of the client system of the caller-user comprises anidentification of one or more codecs, wherein the capabilities of theclient system of the callee-user comprises an identification of one ormore codecs, and further comprising: determining one or more compatiblecodecs to be used in the communication session, wherein the media streamcomprises datagrams encoded using one of the compatible codecs.
 6. Themethod of claim 1, further comprising: receiving a reply-input from theclient system of the callee-user; re-establishing the communicationsession, the media stream further comprising media captured at theclient system of the callee-user and received at the client system ofthe caller-user; and sending the media captured at the client system ofthe callee-user to the client system of the caller-user.
 7. The methodof claim 6, wherein the reply-input specifies a media type to be sent bythe callee-user, wherein the media type to be sent by the callee-userdiffers from the media type of the media captured at the client-systemof the caller-user.
 8. The method of claim 6, wherein the reply-inputspecifies a media type required by the callee-user for the media stream,and further comprising: sending a request to the caller-user to acceptthe specified media type; receiving a response from the caller-userregarding the request; and if the response comprises acceptance of thespecified media type, re-establishing the communication session, themedia stream comprising only media of the specified media type; else ifthe response comprises refusal to accept the specified media type,providing a notification to the callee-user regarding the refusal. 9.The method of claim 1, wherein determining that the callee-user isavailable for the communication session is further based on anoccurrence of one or more negative conditions, the one or more negativeconditions comprising information indicating that the client system ofthe callee-user is not available for the communication session.
 10. Themethod of claim 9, wherein the one or more negative conditions furthercomprise a user preference of the callee-user indicating that thecallee-user is not interested in the communication session.
 11. Themethod of claim 9, wherein the one or more negative conditions furthercomprise information about a history of behavior of the callee-user. 12.The method of claim 9, wherein the one or more negative conditionsfurther comprise information indicating the callee-user has alreadyestablished a different communication session with a different user. 13.The method of claim 9, wherein the one or more negative conditionsfurther comprise information about a privacy setting of the callee-userspecifying that the callee-user does not permit communication sessionsinitiated by other users.
 14. The method of claim 9, wherein the one ormore negative conditions further comprise information about a mood orsentiment of the callee-user indicating that the callee-user is notinterested in the communication session.
 15. The method of claim 9,further comprising: accessing a social graph comprising a plurality ofnodes and a plurality of edges connecting the nodes, each of the edgesbetween two of the nodes representing a single degree of separationbetween them, the nodes comprising: a first node corresponding to thecallee-user; a second node corresponding to the caller-user; and aplurality of other nodes that each correspond to concepts or usersassociated with the computer server machine; and wherein the one or morenegative conditions further comprise information about one or more ofthe other nodes that are connected to the first node or the second node.16. The method of claim 15, wherein the information based on the one ormore of the other nodes indicates that there is more than a singledegree of separation between the first node and the second node.
 17. Themethod of claim 15, wherein the information based on the one or more ofthe other nodes indicates that the second node is among a group of nodescorresponding to users who cannot initiate a communication session withthe callee-user.
 18. The method of claim 1, wherein, if the media streamcomprising media captured at the client system of the caller-usercomprises a video stream, the video of the video stream is optimized tobe displayed within a subregion of the display of the client system ofthe callee-user.
 19. One or more computer-readable non-transitorystorage media embodying software that is operable when executed to:determine that a callee-user is available for a communication sessionbased on location information associated with a client system of thecallee-user; send, in response to determining that the callee-user isavailable, a notification to a client system of a caller-user indicatingthat the callee-user is available; receive a request from the clientsystem of the caller-user to initiate the communication session;establish the communication session to enable a media stream comprisingmedia captured at the client system of the caller-user to be received atthe client system of a callee-user; and send the media captured at theclient system of the caller-user to the client system of thecallee-user.
 20. A system comprising: one or more processors; and amemory coupled to the processors comprising instructions executable bythe processors, the processors being operable when executing theinstructions to: determine that a callee-user is available for acommunication session based on location information associated with aclient system of the callee-user; send, in response to determining thatthe callee-user is available, a notification to a client system of acaller-user indicating that the callee-user is available; receive arequest from the client system of the caller-user to initiate thecommunication session; establish the communication session to enable amedia stream comprising media captured at the client system of thecaller-user to be received at the client system of a callee-user; andsend the media captured at the client system of the caller-user to theclient system of the callee-user.